如何对齐 GroupLayout 中的内容?

How to align things in GroupLayout?

我必须使用 GroupLayout 制作 this 面板, 我为它写了下面的代码

GroupLayout layout = new GroupLayout(this);
this.setLayout(layout);

layout.setAutoCreateContainerGaps(true);
layout.setAutoCreateGaps(true);

layout.setHorizontalGroup(layout
  .createSequentialGroup()
  .addComponent(label)
  .addGroup(layout.createParallelGroup(GroupLayout.Alignment.CENTER)
              .addComponent(installButton).addComponent(installProgressBar)
              .addComponent(upadteLabel).addComponent(upadteButton)
              .addComponent(removeButton)));

layout.setVerticalGroup(layout
  .createParallelGroup()
  .addComponent(label)
  .addGroup(layout
              .createSequentialGroup()
              .addComponent(installButton)
              .addGroup(layout.createParallelGroup()
                          .addComponent(installProgressBar)
                          .addComponent(upadteLabel))
              .addComponent(upadteButton).addComponent(removeButton)));

layout.linkSize(SwingConstants.HORIZONTAL, installButton,
                installProgressBar, upadteLabel, upadteButton, removeButton);

installProgressBar 和 updateLabel 必须共享相同的 space(完成)。

但这并不能使按钮正确排列,我曾尝试在不同的地方使用 GroupLayout.Alignment.TRAILING,但无法使其正常工作。 \基本上我希望标签具有固定大小(我可以做到)并且标签左对齐而按钮必须右对齐。

谁能帮我解释一下对齐方式。

为了回答我自己的问题,添加一个 preferredGap() 就可以了。 最终代码为

layout.setHorizontalGroup(layout
  .createSequentialGroup()
  .addComponent(label, labelWidth, labelWidth, labelWidth)
  .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED,
                   GroupLayout.PREFERRED_SIZE, Short.MAX_VALUE)
  .addGroup(layout
              .createParallelGroup(GroupLayout.Alignment.CENTER)
              .addComponent(installButton, BUTTON_WIDTH, BUTTON_WIDTH,
                            BUTTON_WIDTH).addComponent(installProgressBar)
              .addComponent(updateLabel).addComponent(updateButton)
              .addComponent(removeButton)));

layout.setVerticalGroup(layout
  .createParallelGroup()
  .addComponent(label)
  .addGroup(layout
              .createSequentialGroup()
              .addComponent(installButton)
              .addGroup(layout.createParallelGroup()
                          .addComponent(installProgressBar)
                          .addComponent(updateLabel))
              .addComponent(updateButton).addComponent(removeButton)));

layout
  .linkSize(SwingConstants.HORIZONTAL, installButton, installProgressBar,
            updateLabel, updateButton, removeButton);