我使用GroupLayout
来管理某些动态生成的数据输入表单中的组件。布局或多或少像这样:Swing GroupLayout:调整大小并限制组件大小
*-----------------------------------------------*
| label A | field A |
| label B | field B |
| label C | field C |
*-----------------------------------------------*
我使用用于水平布局2个平行组,以及用于垂直布局的单个顺序组。大多数情况下,一切都很好。
我想将标签的最大宽度(仅为JLabel
的实例)限制为父项的宽度的三分之一JFrame
。如果JFrame
是固定大小,这将是微不足道的,但我必须处理它被调整大小。
我从JFrame
中挑选ComponentListener.componentResized()
事件,但是我一旦遇到这样的事件,我有点被困在做什么。
我试过这个方法没有任何的运气:
public void componentResized(ComponentEvent e) {
int maxW = parentFrame.getWidth()/3;
for (JLabel l : labels) {
l.setMaximumSize(// have also tried setSize() and setPreferredSize()
new Dimension(
Math.min(l.getSize().width, maxW),
l.getMaximumSize().height));
}
groupLayout.invalidateLayout(getContentSpace());
}
任何人都可以提出一个方法来限制将工作标签的宽度是多少?
我可能每次都可以从头重新构建布局,但我觉得应该有一个更简单的方法。
永远不要setXXSize:http://stackoverflow.com/questions/7229226/should-i-avoid-the-use-of-setpreferredmaximumminimumsize-methods-in-java-swi – kleopatra
标签的尺寸是否大于最大标签的首选尺寸? – trashgod
@trashgod不,没有。我想设置标签宽度的上限,而不是最小限制。编辑了这个问题,使其更清晰。 – vaughandroid