0

有没有办法将元素添加到水平而不是垂直添加它们的网格布局?基本上我想在下一个开始之前用元素填充一整行。

希望我把我的问题说清楚了。

4

5 回答 5

6

就是 GridLayout 的工作原理

于 2009-12-07T19:08:07.047 回答
2

我会建议GridBagLayoutGridBagConstraints

它很像 GridLayout,但使用 GridBagConstraints 可以指定组件的 x 和 y 坐标,并且可以进行列和行跨度。

它看起来像这样:

import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;

GridBagLayout layout = new GridBagLayout();
GridBagConstraints c = new GridBagConstraints();

JPanel panel = new JPanel();
JLabel label = new JLabel("foo");

panel.setLayout(layout);

c.gridx = 0;
c.gridy = 0;
panel.add(label, c);
于 2009-12-07T19:17:46.920 回答
0

GridLayout,顾名思义,会根据你在构造函数中指定的列数和行数来布局组件,一旦你添加了指定数量的组件,它就会移动到下一行。

从您的问题来看, FlowLayout似乎更符合您正在寻找的内容。

编辑:我不知道为什么,但是如果您将行数指定为 0(例如new GridLayout(0, 9),它似乎可以正常工作。

于 2009-12-07T19:10:17.193 回答
0

我假设你的意思是说你想在移动到下一列之前填满一列中的所有行。如果是这样,则使用自定义布局管理器

垂直网格布局

于 2009-12-07T19:26:13.563 回答
0

实际上你应该使用GroupLayout 它是新的(从 jdk 1.6 开始)并且非常棒。它为您提供了很大的布局灵活性。

于 2009-12-07T19:40:18.457 回答