我有一個問題,我的JLayeredPane
,我可能做了一些令人難以置信的簡單但我不能包圍我的頭。我遇到的問題是所有組件都合併在一起,並沒有訂購。你能否糾正這一點,因爲我不知道。我試圖做的順序是有這樣JLayeredPane格式問題
輸出
LABEL1(後面)
輸入(前)
import java.awt.BorderLayout;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.io.IOException;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JTextArea;
import javax.swing.JTextField;
public class window extends JFrame implements KeyListener {
/**
*
*/
private static final long serialVersionUID = 7092006413113558324L;
private static int NewSize;
public static String MainInput;
public static JLabel label1 = new JLabel();
public static JTextField input = new JTextField(10);
public static JTextArea output = new JTextArea(main.Winx, NewSize);
public window() {
super("Satine. /InDev-01/");
JLabel label1;
NewSize = main.Winy - 20;
setLayout(new BorderLayout());
output.setToolTipText("");
add(input, BorderLayout.PAGE_END);
add(output, BorderLayout.CENTER);
input.addKeyListener(this);
input.requestFocus();
ImageIcon icon = new ImageIcon("C:\\Users\\" + System.getProperty("user.name") + "\\AppData\\Roaming\\.Satine\\img\\textbox.png", "This is the desc");
label1 = new JLabel(icon);
add(label1, BorderLayout.PAGE_END);
}
public void keyPressed(KeyEvent e) {
int key = e.getKeyCode();
if (key == KeyEvent.VK_ENTER) {
try {
MainMenu.start();
} catch (IOException e1) {
System.out.print(e1.getCause());
}
}
}
@Override
public void keyReleased(KeyEvent e) {
}
@Override
public void keyTyped(KeyEvent e) {
}
}
以及佈局主類。
import java.awt.Container;
import java.io.IOException;
import javax.swing.JFrame;
import javax.swing.JLayeredPane;
public class main {
public static int Winx, Winy;
private static JLayeredPane lpane = new JLayeredPane();
public static void main(String[] args) throws IOException{
Winx = window.WIDTH;
Winy = window.HEIGHT;
window Mth= new window();
Mth.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Mth.setSize(1280,720);
Mth.setVisible(true);
lpane.add(window.label1);
lpane.add(window.input);
lpane.add(window.output);
lpane.setLayer(window.label1, 2, -1);
lpane.setLayer(window.input, 1, 0);
lpane.setLayer(window.output, 3, 0);
Mth.pack();
}
}
謝謝你的時間,我不希望代碼是爲我寫的,我想要的只是提示我出錯的地方。
爲什麼不直接使用的JLayeredPane在GUI的底部,在該部分,在那裏你需要覆蓋?另外,爲什麼您似乎要將組件添加到JLayeredPane兩次?我從來沒有使用'setLayer(...)'方法,我不知道你爲什麼。爲什麼不簡單地調用'add(Component,Integer)'超載? –
我明白你的意思,但我會如何分裂它? – Koala
?你是什麼意思你將如何分裂它?您可以爲整個GUI使用不同的佈局,例如BoxLayout,將輸出添加到topp並將JLayeredPane添加到底部,然後將組件添加到JLayeredPane一次,而不是您看起來要做的兩次。 –