我正在尝试从jPanel1的构造函数填充jPanel1内的jPanel2。
这样的东西。
public jPanel1(){
initComponents(); // here is created the jPanel2
JButton jb= new JButton();
jb.setBounds(new java.awt.Rectangle(0, 22, 400, 270));
this.jPanel2.add(jb);
}
Jbutton没有显示。无论如何,当我从构造函数打印jPanel2边界时,都会得到以下信息:
'java.awt.Rectangle [x = 0,y = 0,width = 0,height = 0]'
我不明白的是,例如,当我从另一个按钮侦听器添加此Jbutton时,它运行良好。
我猜想在JPanel1生命周期的某个时刻,jPanel2是有界的,但我不知道在哪里。
有人可以帮忙吗?
谢谢!
最佳答案
JPanel
默认情况下使用FlowLayout
。相反,您应该尝试使用BorderLayout
public jPanel1(){
initComponents(); // here is created the jPanel2
JButton jb= new JButton();
jPanel2.setLayout(new BorderLayout());
this.jPanel2.add(jb);
}
您面临的最初问题是父容器(
jPanel1
)的大小在布局容器之前是未知的……更好地让布局管理器在其中进行工作;)