我必须使用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但无法使其正常工作。 \基本上我希望标签具有固定尺寸(我可以这样做)并且标签是左对齐的,而按钮必须是右对齐。
有人可以帮助我,并解释对齐的工作原理。
答案 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);