智能垂直流量布局
我在JPanel布局(Swing)中寻找以下行为:基本上它会以垂直方式排列组件,一个相互吼叫。
当组件无法垂直放入容器中时,它应该在新行中添加下一个组件。 这将继续动态,根据需要添加新行。
添加3个标签后,看起来会像这样:
+--------------------------+ | label1 | | label2 | | label3 | +--------------------------+
添加:2个以上的标签:
+--------------------------+ | label1 label4 | | label2 label5 | | label3 | +--------------------------+
最后,添加2个标签后,它看起来像这样:
+--------------------------+ | label1 label4 label7 | | label2 label5 | | label3 label6 | +--------------------------+
使用当前布局之一可以实现此行为吗?
我应该自己创建吗?
你会如何解决这个问题?
对的,这是可能的。 尝试使用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.
好的,找到解决方案。 感谢Boris,使用MigLayout :
LC lc_Y = (new LC()).fill().flowY(); lc_Y.setWrapAfter(ITEMS_PER_COLUMN); JPanel panel = new JPanel(new MigLayout(lc_Y));
现在,如果不需要指定每列的项目数量,那将是完美的。 我的意思是,布局会尝试在容器中垂直填充尽可能多的项目。