与Java Swing的GroupLayout混合对齐

zig*_*don 8 java swing grouplayout

我正在尝试在我的应用程序中构建一个GUI窗口.我要做的是有一个窗口,顶部有几个按钮,还有一个大文本区域.像这样的东西:

+--------------------------------------------------+
| [button1] [button2]                    [button3] |
| +----------------------------------------------+ |
| | text area                                    | |
| |                                              | |
| |                                              | |
| |                                              | |
| +----------------------------------------------+ |
+--------------------------------------------------+
Run Code Online (Sandbox Code Playgroud)

我几乎在那里,使用GroupLayout:

  layout.setHorizontalGroup(
    layout.createParallelGroup()
      .addGroup(layout.createSequentialGroup()
        .addComponent(button1)
        .addComponent(button2))
        .addComponent(closeWindow))
      .addComponent(textarea1)
  );

  layout.setVerticalGroup(
    layout.createSequentialGroup()
      .addGroup(layout.createParallelGroup()
        .addComponent(button1)
        .addComponent(button2)
        .addComponent(button3))
      .addComponent(textarea)
  );
Run Code Online (Sandbox Code Playgroud)

问题是,这最终会使button3与左边对齐,另外两个.我似乎无法弄清楚如何只在一个按钮上指定对齐方式.我可以在整个按钮栏上进行GroupLayout.Alignment.TRAILING,但是它会击中所有3个按钮,这也不太合适.

那么正确的方法是什么?由于对齐仅适用于并行组,我不认为拥有一个包含两个顺序组的Horizo​​ntalGroup会有帮助吗?

我错过了什么?

Eta*_*oin 11

在顺序组中添加间隙.保留水平组:

layout.setVerticalGroup(
    layout.createSequentialGroup()
      .addGroup(layout.createParallelGroup()
        .addComponent(button1)
        .addComponent(button2)
        .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
        .addComponent(button3))
      .addComponent(textarea)
  );
Run Code Online (Sandbox Code Playgroud)

与这些参数的差距充当了"弹簧",占据了所有可用空间.