我希望添加 3 个 JPanel,它们之间的距离各不相同,可填充内容 Pane /JFrame。 目前,add(new JPanel()) 将覆盖当前内容 Pane 或根本不显示。
理想情况下,我希望代码类似于(例如):
JPanel panel1 = new JPanel();
panel1.add(new jbutton())
panel1.setBounds(0,0,100,100);
JPanel panel2 = new JPanel();
panel2.add(new jbutton());
panel2.setBounds(100,0,100,100);
getContentPane().add(panel1);
getContentPane().add(panel2);
等等...
我知道可以将面板添加到面板中,因为我已经使用 borderlayout 完成了。 请不要告诉我使用布局管理器,我一直在使用 gridbag,但它没有产生我想要的结果。
我想完全控制对象的大小和位置。另外,请不要告诉我,“你很蠢;这很蠢;你为什么要那样做?”
请仅提供有用的回复!我不是菜鸟程序员,只是一个对 GUI 感到沮丧的人,所以请随意深入,只要你愿意。
最佳答案
默认情况下,JFrame 的内容 Pane 使用 BorderLayout,因此每次向其添加新面板时,无需指定其在布局中的位置,它会将其添加到中心,从而替换之前的面板。
只需将内容 Pane 的布局设置为您想要的。您当然可以使用 null 布局(即将布局设置为 null
),但有时您会被这种设计错误所困扰。仅仅因为您不能使用布局管理器并不意味着您不应该。继续学习。 GridBagLayout 是最复杂的布局之一。您可以先使用其他的。
关于java - 在 java 中如何将一个 JPanel 添加到另一个 JPanel,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7858752/