标准Java Swing中最简单的方法是以这样的方式对齐三个组件:
Component1
和Component3
的动态宽度 调整为相等,
虽然Component2
(介于两者之间)有常量宽度?
想象一下,我们有一些可调整大小的JPanel(例如在JFrame中)。
小宽度应如下所示:
[----------------whole JPanel----------------]
[--Component1--] [Component2] [--Component3--]
大宽度应如下所示:
[------------------------whole JPanel------------------------]
[------Component1------] [Component2] [------Component3------]
注意:我对GroupLayout
进行了长时间的“试用和纠错”。
答案 0 :(得分:1)
一种选择是使用GridBagLayout。一个快速而又脏的片段,可以帮助您入门:
GridBagConstraints gbc;
final int A_CENTER = GridBagConstraints.CENTER; // anchor: center
final int F_NONE = GridBagConstraints.NONE; // fill: none
final int F_DX = GridBagConstraints.HORIZONTAL; // fill: dx only
final Insets IN_0 = new Insets(0, 0, 0, 0); // empty insets
setLayout(new GridBagLayout() );
gbc = new GridBagConstraints(0, 0, 1, 1, 50.0, 0.0, A_CENTER, F_DX, IN_0, 0, 0);
add(new JButton("test1"), gbc);
gbc = new GridBagConstraints(1, 0, 1, 1, 0.0, 0.0, A_CENTER, F_NONE, IN_0, 0, 0);
add(new JButton("test2"), gbc);
gbc = new GridBagConstraints(2, 0, 1, 1, 50.0, 0.0, A_CENTER, F_DX, IN_0, 0, 0);
add(new JButton("test1"), gbc);
显然你可以用GridBag做更多的事情,你需要做一些抛光才能准确地得到你想要的东西,但这应该让你开始。
GBC构造函数中的第五个参数是用于在x方向上拉伸的权重。将它们设置为相等,并强制中心组件不伸展(F_NONE)会造成肮脏的工作。
答案 1 :(得分:1)
MigLayout经理怎么样?它不是JRE的一部分,但它是一个很棒的布局管理器,它可以使用比GridBag更少的代码轻松生成所需的布局。查看他们的demo。
忍不住张贴totally grid bag卡通...享受(: