這是我的第一篇文章,請原諒我,如果我做錯了什麼。Java Swing組件在添加到JPanel時沒有正確的大小
我的問題是:
我試圖用組件定義的值添加到JPanel的大小等 但是,當我將它們添加到面板上,他們絕對沒有大小和位置,他們應該有。 例如:
public class Console extends JFrame {
private JPanel mainPanel = new JPanel();
private JTextArea textField = new JTextArea();
private JTextArea textField2 = new JTextArea();
public Console() {
this.setSize(500,300);
this.mainPanel.setSize(this.getWidth(),this.getHeight());
this.textField.setEditable(false);
this.textField.setSize(this.mainPanel.getWidth(), 100);
this.textField.setPreferredSize(new Dimension(this.mainPanel.getWidth(),this.mainPanel.getHeight()));
this.textField.setLocation(0, 0);
this.textField.setText("some text");
this.textField.setVisible(true);
this.textField2.setSize(this.mainPanel.getWidth(),200);
this.textField2.setPreferredSize(new Dimension(this.getWidth(),this.getHeight()));
this.textField2.setLocation(0,this.mainPanel.getHeight()-this.textField.getHeight());
this.textField2.setText("blabla");
this.textField2.setVisible(true);
this.mainPanel.add(textField);
this.mainPanel.add(textField2);
this.mainPanel.setVisible(true);
this.add(this.mainPanel);
// I know you should not call setVisible() in the Constructor, just for making Code more simple here.
this.setVisible(true);
}
}
當我啓動應用程序,無論是JTextArea中的確實小,在中間的某個位置(不是上面設置),而mainPanel中被correct.I試圖打電話的setSize(),並有必要對setPreferredSize()在守則的不同地方,但它沒有奏效。我知道最好使用LayoutManager來做到這一點,據我所知,但說實話,我不知道如何正確使用它。我在Oracle Doc上檢查過它,但是如果有人可以爲此發佈一個乾淨的解決方案,我將不勝感激,謝謝。
你需要使用正確的'佈局' –
對不起,如果這聽起來很愚蠢:但你的意思是setLayout()?如果是這樣,我想我必須,例如,創建一個GridLayout。但是,我必須將組件添加到此佈局還是它如何工作? –
查看我的指導方針作爲答案。 –