MigLayout:使用LayoutManagers在嵌套面板中设置相等的列宽

时间:2013-10-25 12:18:08

标签: java swing miglayout

我使用MigLayout嵌套面板。

面板外部,其中包含两行MigLayout。每行包含一个嵌套面板(上部下部),其定义如下:

JPanel upper = new JPanel(); // External component
add(upper, "cell 0 0,grow"); // "cell 0 1, grow" - for the lower
upper.setLayout(new MigLayout("", "[][grow]", "[]"));

这是示意图:

   +----------------+---------------------------+
   |                |upper column 1 size        |
   |                v                           |
   |  +-------------+-------------------+       |
   |  |             |                   |       |
   |  |  label1     |     textfield1    |upper  |
   |  |             |                   |       |
   |  +-------------+-------------------+       |
   |                |                           | outer
   |  +-------------v------+------------+       |
   |  |                    |            |       |
   |  |  label2 - (longer) | textfield2 | lower |
   |  |                    |            |       |
   |  +--------------------+------------+       |
   |                       ^                    |
   |                       |lower column 1 size |
   +--------------------------------------------+

label2的文本比label1的文本长。这是它的样子。

Screenshot of the nested panels

我希望文本字段的右边框对齐,尽管它们位于不同的面板中(使用单独的LayoutManagers)

我尝试将一个sizegroup设置为两个列定义,但这不会导致更改。这在某种程度上是有道理的,因为MigLayouts彼此不了解。 (见size group definition in the whitepaper

如何才能实现上面板和下面板的第一列具有相同的宽度,而无需在面板中硬编码?

我不希望更改所有这些列定义并硬编码(相同)固定宽度。嵌套面板应该保持独立,因为它们是我们重用的UI组件。

0 个答案:

没有答案