这是我在这里发布的第一篇文章,如果我做错了什么,请原谅。
我的问题是:
我正在尝试向具有定义大小等值的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是正确的。我尝试在代码的不同位置调用setSize()和setPreferredSize(),但这没有起作用。据我所知,使用布局管理器更好,但老实说,我不知道如何正确使用它。我在Oracle文档中检查了它,但如果有人能发布一个干净的解决方案,我会非常感激。谢谢提前。
布局
。 - Nikolay KuznetsovsetXxXSize()
方法指定任意值,让你使用的布局来担心那部分。 - nIcE cOw