java Swing:columnflow布局管理器?
我正在寻找一个LayoutManager
,它允许我以列的形式显示容器(例如JPanel)中的一组组件,大致如下所示
- 容器的宽度是一个输入约束李>
- 容器的首选高度是宽度的函数,为:
- 将构件布置在多个柱中时,使其符合宽度要求所需的最小高度李>
- 使组件适合单个柱所需的最小高度李>
- 这些组件将按报纸专栏的顺序排列,从上到下,然后从左到右李>
下面是一个显示13个组件的示例(低技术文本显示)。如果它们可以放在3列中,它们将如下所示:
Foo1 Foo6 Foo11
Foo2 Foo7 Foo12
Foo3 Foo8 Foo13
Foo4 Foo9
Foo5 Foo10
如果太宽的话,它们会像这样:
Foo1 Foo8
Foo2 Foo9
Foo3 Foo10
Foo4 Foo11
Foo5 Foo12
Foo6 Foo13
Foo7
如果太宽的话,它们会像这样:
Foo1
Foo2
Foo3
Foo4
Foo5
Foo6
Foo7
Foo8
Foo9
Foo10
Foo11
Foo12
Foo13
是否有一个预先存在的LayoutManager,我可以使用它或它的子类来做类似的事情
编辑:这非常接近于this other question about vertical layout,但该布局以组件高度为约束,而我的布局以组件宽度为约束
# 1 楼答案
你可能想调查一下格里布·莱奥特 http://download.oracle.com/javase/tutorial/uiswing/layout/gridbag.html
通过gridbag布局,您可以设置特定行中的组件数量
但如果我没弄错的话,我不应该做你想做的事
让我们来看看简单的标签。 如果标签的大小*2大于宽度,则每行仅显示一个标签。等等
下面是一个例子,应该可以澄清这一点
# 2 楼答案
允许这种布局的另一个组件是^{} ,其中包括一个
VERTICAL_WRAP
,它“表示一种报纸样式的布局,单元格先垂直然后水平流动。”根据你的需要,一个合适的ListCellRenderer
,上面提到的here,可能就足够了