我想实现以下目标:
第一列占总宽度的 20%,第二列占总宽度的 80%。它应该是动态的(例如,当我扩展/收缩时,它应该像css中的液体布局一样相应地改变)
我想实现以下目标:
第一列占总宽度的 20%,第二列占总宽度的 80%。它应该是动态的(例如,当我扩展/收缩时,它应该像css中的液体布局一样相应地改变)
MigLayout 是你最好的朋友: http: //www.miglayout.com
代码如下所示:
JPanel panel = new JPanel(new MigLayout("wrap 2, fill", "[fill,20%][fill,80%]"));
panel.add(panel1);
panel.add(panel2);
对于 Swing,您将使用网格袋布局。
你有两列,一行。
将设置 gridwidth 属性,以便第一列是 0.2,第二列是 0.8 或任何一组数字,这样第一列的值是第二列值的 1/4。
两列的网格高度应该相同。
你可以尝试一下填充。如果您不介意 UI 中未填充组件的空间,请使用 none。如果您希望它们很好地调整大小但保持 0.2 到 0.8 的比例,请尝试水平并查看是否自动保持正确的比例。
如果没有,则尝试将第一列的权重设置为 0.2,将第二列的权重设置为 0.8。无论用户制作的 JPanel 有多大,你都试图保持 2 到 0.8 的比例。
如果您需要更多帮助,请告诉我。
如果您询问桌面 Java 应用程序(基于 Swing),您可以使用 GridBagLayout - JDK 附带的标准布局。虽然有点难以理解。 http://docs.oracle.com/javase/tutorial/uiswing/layout/gridbag.html
最好的解决方案是制作自己的布局 - 这一点都不难。
GridBagLayout 令人恐惧多于理解。
我曾在一个应用程序上工作过,其中大多数屏幕都有页眉页脚和左侧导航面板。我当时使用了 Gridbag 布局,只有在调整大小时才给出了所需的行为。曾经用过visualcafe。
您的两列要求似乎是开始使用 Gridbag 的一个很好的要求,因为只有几个 gridbag 约束会受到影响。如果您有更多行/列,我建议使用工具来构建 UI。