如何在GroupLayout中对齐事物?

时间:2015-06-24 11:24:44

标签: java swing layout layout-manager 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必须共享相同的空间(已完成)。

但这并没有使按钮正确,我尝试在各个地方使用GroupLayout.Alignment.TRAILING但无法使其正常工作。 \基本上我希望标签具有固定尺寸(我可以这样做)并且标签是左对齐的,而按钮必须是右对齐。

有人可以帮助我,并解释对齐的工作原理。

1 个答案:

答案 0 :(得分:1)

要回答我自己的问题,添加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);