3

我每个都使用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)

我尝试为两个列定义设置一个大小组,但这并没有导致改变。这在某种程度上是有道理的,因为 MigLayouts 彼此不认识。(参见白皮书中的尺寸组定义

如何在不将尺寸硬编码到面板中的情况下实现上面板和下面板的第一列具有相同的宽度?

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

4

0 回答 0