如何对齐 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);
我必须使用 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);