我想实现以下目标:
第一列占总宽度的20%,第二列占80%。它应该是动态的(例如,当我扩展/缩小时,它应该像css中的液体布局一样相应地改变)
答案 0 :(得分: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);
答案 1 :(得分:3)
对于Swing,您将使用网格布局。
您有两列,一行。
将设置gridwidth属性,使第一列为.2,第二列为.8或任何数字集,使第一列的值为第二列的值的1/4。
两列的网格高度应该相同。
你可以尝试一下填充。如果您不介意UI中未填充组件的空间,请使用none。如果你希望它们很好地调整大小,但保持.2到.8的比例,那么尝试水平,看看是否自动保持适当的比例。
如果没有,则尝试将权重设置为.2表示第一列,.8表示第二列。无论用户使用多大的JPanel,你都试图保持2比0.8的比例。
如果您需要更多帮助,请告诉我。
答案 2 :(得分:2)
如果您询问桌面java应用程序(基于Swing),可以使用GridBagLayout - JDK附带标准布局。虽然有点难以理解。 http://docs.oracle.com/javase/tutorial/uiswing/layout/gridbag.html
最好的解决方案是制作自己的布局 - 根本不是那么难。
答案 3 :(得分:2)
GridBagLayout比人们更害怕。
我曾经在一个应用程序上工作,大多数屏幕都有页眉和左侧导航面板。然后我使用了Gridbag布局,只在调整大小时提供了所需的行为。曾经使用过visualcafe。
您的两个列要求似乎是一个很好的开始使用Gridbag,因为只会影响几个gridbag约束。 如果你有更多的行/列,我建议使用工具来构建UI。