我必须使用GroupLayout制作这个面板,我已经为它写了以下代码
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.Aalignment.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);