有没有办法将元素添加到水平而不是垂直添加它们的网格布局?基本上我想在下一个开始之前用元素填充一整行。
希望我把我的问题说清楚了。
这就是 GridLayout 的工作原理。
我会建议GridBagLayout和GridBagConstraints
它很像 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);
GridLayout,顾名思义,会根据你在构造函数中指定的列数和行数来布局组件,一旦你添加了指定数量的组件,它就会移动到下一行。
从您的问题来看, FlowLayout似乎更符合您正在寻找的内容。
编辑:我不知道为什么,但是如果您将行数指定为 0(例如new GridLayout(0, 9)
,它似乎可以正常工作。
我假设你的意思是说你想在移动到下一列之前填满一列中的所有行。如果是这样,则使用自定义布局管理器
实际上你应该使用GroupLayout 它是新的(从 jdk 1.6 开始)并且非常棒。它为您提供了很大的布局灵活性。