2

在标准 Java Swing 中以以下方式对齐三个组件的最简单方法是什么:

  • 和的动态宽度调整为相等,Component1Component3

  • Component2(介于两者之间)具有恒定的宽度?

想象一下,我们有一些可调整大小的 JPanel(例如在 JFrame 内部)。

小宽度应如下所示:

[----------------whole JPanel----------------]
[--Component1--] [Component2] [--Component3--]

大宽度应该是这样的:

[------------------------whole JPanel------------------------]
[------Component1------] [Component2] [------Component3------]

注意:我只是“反复试验”GroupLayout太久了。

4

2 回答 2

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) 会做脏活。

于 2010-12-21T00:34:38.207 回答
1

MigLayout管理器怎么样?它不是 JRE 的一部分,而是一个出色的布局管理器,它可以使用比 GridBag 更少的代码轻松生成您需要的布局。查看他们的演示

忍不住发布完全网格包卡通......享受(:

于 2010-12-21T10:23:19.283 回答