我正在构建一个PropertyPanel。目前我正在使用GridLayout
来管理JLabels
及其相应的字段,我可以在其中指定值。但问题是GridLayout
会自动管理列的大小:它使它们的宽度相同。
这意味着当我有一个很大的值字段时,colum会越来越大(这很好),但另一列(所有JLabel
s)也越来越大。这是一个截图:
< BAD
正如您所看到的,image
属性具有巨大的值,这使得两个列都更大,并且JLabel
之后我有足够的空间。
所以,我正在搜索LayoutManager
,这会使每列都尽可能大
我想要一个像这样的布局(用Gimp编辑):
< GOOD
由于
答案 0 :(得分:5)
答案 1 :(得分:2)
SpringLayout
是我通常用于此类表单的内容。虽然我认为GridBagLayout
也可以很好地运作。
答案 2 :(得分:2)
我倾向于尝试通过混合GridLayout和BorderLayout来破解所有内容,所以也许它不是最好的解决方案但是......
创建两个GridLayouts,两个都有一个列。一个用于标签,另一个用于控件。
现在创建一个BorderLayout作为父级。
将左侧网格添加到BorderLayout.WEST,将右侧网格添加到BorderLayout.CENTER。
答案 3 :(得分:2)
虽然这是在11个小时前得到解答的,但我只是认为我会进入并且提个建议。我建议GroupLayout。
我希望最近打破名称/值对话框的嵌套布局,同时查看GroupLayout
& SpringLayout
。似乎SpringLayout
提供的唯一优势是它可以实现标签的正确对齐文本(可能有一种方法可以使用GL来实现,但我无法弄清楚如何)。在缺点方面,SpringLayout
的Java Tutorial示例使用了一个惊人的“辅助类”来定义布局约束。
最后(这只是一个非常短暂的'研究')我选择使用GroupLayout
。
答案 4 :(得分:1)
以下是标准LayoutManagers的概述: http://download.oracle.com/javase/tutorial/uiswing/layout/visual.html
你可以,例如如果要手动编写GUI代码,请使用GridBagLayout或非标准MigLayout。
如果要使用GUI构建器(例如NetBeans中的构建器),可以使用GroupLayout。
答案 5 :(得分:0)
考虑使用MigLayout。如果受限于当前JDK GridBagLayout。