java - 在 java 中如何将一个 JPanel 添加到另一个 JPanel

标签 java swing user-interface jpanel

我希望添加 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/

相关文章:

java - 有没有办法让我的地址栏的 JTextField 更大更 flex

css - 如何访问 shinyapps.io 上应用程序的 R+Shiny 代码?

java - Gradle 卡在解决依赖关系 :testRunTime 处

java - 将更新发布到 "a"墙

java - 在install4j中,如何将Java更改为新版本?

java - 在形状上画一条绳子

Java Eclipse - 将字段命名为表列名以外的其他名称

java - Java IDE (NetBeans) 的奇怪行为

java - 使用 jButton 将数据保存到 HashMap 中

java - 构建图形用户界面的规则