我GroupLayout
用来管理一些动态生成的数据输入表单中的组件。布局或多或少是这样的:
*-----------------------------------------------*
| label A | field A |
| label B | field B |
| label C | field C |
*-----------------------------------------------*
我为水平布局使用 2 个并行组,为垂直布局使用一个顺序组。在大多数情况下,一切正常。
我想将标签的最大宽度(只是 的实例JLabel
)限制为 parent 宽度的 1/3 JFrame
。如果JFrame
是固定大小,这将是微不足道的,但我必须处理它被调整大小。
我正在从中获取ComponentListener.componentResized()
事件,JFrame
但是一旦收到这样的事件,我就有点不知道该怎么做。
我试过这种方法没有任何运气:
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());
}
任何人都可以提出一种限制标签宽度的方法吗?
我可能每次都可以从头开始重建布局,但我觉得应该有一个更简单的方法。