1

我想实现以下目标:

在此处输入图像描述

第一列占总宽度的 20%,第二列占总宽度的 80%。它应该是动态的(例如,当我扩展/收缩时,它应该像css中的液体布局一样相应地改变)

4

4 回答 4

3

MigLayout 是你最好的朋友: http: //www.miglayout.com

代码如下所示:

JPanel panel = new JPanel(new MigLayout("wrap 2, fill", "[fill,20%][fill,80%]"));
panel.add(panel1);
panel.add(panel2);
于 2012-05-28T15:25:04.227 回答
3

对于 Swing,您将使用网格袋布局。

你有两列,一行。

将设置 gridwidth 属性,以便第一列是 0.2,第二列是 0.8 或任何一组数字,这样第一列的值是第二列值的 1/4。

两列的网格高度应该相同。

你可以尝试一下填充。如果您不介意 UI 中未填充组件的空间,请使用 none。如果您希望它们很好地调整大小但保持 0.2 到 0.8 的比例,请尝试水平并查看是否自动保持正确的比例。

如果没有,则尝试将第一列的权重设置为 0.2,将第二列的权重设置为 0.8。无论用户制作的 JPanel 有多大,你都试图保持 2 到 0.8 的比例。

如果您需要更多帮助,请告诉我。

于 2012-05-28T16:44:31.997 回答
2

如果您询问桌面 Java 应用程序(基于 Swing),您可以使用 GridBagLayout - JDK 附带的标准布局。虽然有点难以理解。 http://docs.oracle.com/javase/tutorial/uiswing/layout/gridbag.html

最好的解决方案是制作自己的布局 - 这一点都不难。

于 2012-05-28T15:30:54.707 回答
2

GridBagLayout 令人恐惧多于理解。

我曾在一个应用程序上工作过,其中大多数屏幕都有页眉页脚和左侧导航面板。我当时使用了 Gridbag 布局,只有在调整大小时才给出了所需的行为。曾经用过visualcafe。

您的两列要求似乎是开始使用 Gridbag 的一个很好的要求,因为只有几个 gridbag 约束会受到影响。如果您有更多行/列,我建议使用工具来构建 UI。

于 2012-05-28T16:30:09.590 回答