我正在尝试从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)的大小在布局容器之前是未知的……更好地让布局管理器在其中进行工作;)

07-26 08:34