我在JPanel布局(Swing)中寻找以下行为:基本上它会以垂直方式排列组件,一个相互吼叫。
当组件无法垂直放入容器时,它应该在新行中添加下一个组件。这将继续动态,根据需要添加新行。
在添加3个标签之后看起来会像这样:
+--------------------------+
| label1 |
| label2 |
| label3 |
+--------------------------+
添加:另外2个标签:
+--------------------------+
| label1 label4 |
| label2 label5 |
| label3 |
+--------------------------+
最后,在添加2个标签后,它将如下所示:
+--------------------------+
| label1 label4 label7 |
| label2 label5 |
| label3 label6 |
+--------------------------+
使用当前布局之一可以实现此行为吗?
我应该自己创建吗?
您如何解决这个问题?
答案 0 :(得分:1)
是的,有可能。尝试使用MigLayout。
以下是一段代码摘要,说明了用法:
JPanel panel = new JPanel(new MigLayout("fill, flowY, wrap 4));
panel.add(new JLabel("row 1, column 1"));
panel.add(new JLabel("row 2, column 1"));
panel.add(new JLabel("row 3, column 1"));
panel.add(new JLabel("row 1, column 2")); // etc.
答案 1 :(得分:0)
好的,找到了解决方案。感谢Boris,使用MigLayout:
LC lc_Y = (new LC()).fill().flowY();
lc_Y.setWrapAfter(ITEMS_PER_COLUMN);
JPanel panel = new JPanel(new MigLayout(lc_Y));
现在,如果不需要指定每列的项目数量,那将是完美的。我的意思是,布局会尝试在容器中垂直填充尽可能多的项目。