5

我正在构建一个 PropertyPanel。目前我正在使用 aGridLayout来管理JLabels我可以指定值的及其对应的字段。但问题是GridLayout自动管理列的大小:它使它们具有相同的宽度。

这意味着当我有一个大值字段时,列会变大(这很好),但另一列(以及我的所有JLabels)也在变大。这是一个屏幕截图:

在此处输入图像描述     < 坏的

如您所见,该image属性具有巨大的价值,这使得两列都更大,并且我在JLabels 之后有很多空间。

所以,我正在寻找一个LayoutManager使每一列都尽可能大的方法。
我想要这样的布局(它是用 Gimp 编辑的):

在此处输入图像描述     < 好

谢谢

4

6 回答 6

5

您可以为此使用 SpringLayout。请参阅如何使用 SpringLayout

示例布局:

在此处输入图像描述

请记住,您也可以嵌套布局。

于 2011-06-23T16:27:45.167 回答
2

SpringLayout是我通常用于这种形式的。虽然我认为GridBagLayout也会很好地工作。

于 2011-06-23T16:28:42.563 回答
2

我倾向于尝试通过混合 GridLayout 和 BorderLayout 来破解所有内容,所以也许这不是最好的解决方案,但是......

创建两个 GridLayout,它们都有一个列。一个用于标签,另一个用于控件。

现在创建一个 BorderLayout 作为父级。

将左侧网格添加到 BorderLayout.WEST,将右侧网格添加到 BorderLayout.CENTER。

于 2011-06-23T16:29:31.107 回答
2

虽然这是 11 小时前回答的,但我只是想我会弹出并提出建议。我建议GroupLayout

我最近想从嵌套布局中打破名称/值对话框,并查看了GroupLayout& SpringLayout。它提供的唯一优势似乎SpringLayout是它可以实现标签的正确对齐文本(可能有一种方法可以使用 GL,但我无法弄清楚如何)。不利的一面是,Java 教程示例SpringLayout使用了巨大的“帮助类”来定义布局约束。

最后(这只是一个非常短的“研究”)我选择使用GroupLayout.

于 2011-06-24T04:03:59.110 回答
1

考虑使用MigLayout。如果限制在当前 JDK 中,则为 GridBagLayout

于 2011-06-23T16:28:37.250 回答
1

以下是标准 LayoutManagers 的概述:http: //download.oracle.com/javase/tutorial/uiswing/layout/visual.html

如果您想手动编写 GUI,您可以使用 GridBagLayout 或非标准的 MigLayout。

如果您想使用 GUI 构建器(例如 NetBeans 中的那个),您可以使用 GroupLayout。

于 2011-06-23T16:29:21.420 回答