我使用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的文本长。这是它的样子。
我希望文本字段的右边框对齐,尽管它们位于不同的面板中(使用单独的LayoutManagers)
我尝试将一个sizegroup设置为两个列定义,但这不会导致更改。这在某种程度上是有道理的,因为MigLayouts彼此不了解。 (见size group definition in the whitepaper)
如何才能实现上面板和下面板的第一列具有相同的宽度,而无需在面板中硬编码?
我不希望更改所有这些列定义并硬编码(相同)固定宽度。嵌套面板应该保持独立,因为它们是我们重用的UI组件。