相关疑难解决方法(0)

Swing GroupLayout:调整和限制组件大小

GroupLayout用来管理一些动态生成的数据输入表单中的组件.布局或多或少如此:

*-----------------------------------------------*
| label A     |   field A                       | 
| label B     |   field B                       |
| label C     |   field C                       |
*-----------------------------------------------*
Run Code Online (Sandbox Code Playgroud)

我使用2个并行组作为水平布局,使用单个顺序组作为垂直布局.在大多数情况下,一切都很好.

我想将标签的最大宽度(仅仅是实例JLabel)限制为父级宽度的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());
}
Run Code Online (Sandbox Code Playgroud)

任何人都可以建议一种限制标签宽度的方法吗?

我可能每次都可以从头开始重建布局,但我觉得应该有一种更简单的方法.

java swing grouplayout

10
推荐指数
1
解决办法
2万
查看次数

标签 统计

grouplayout ×1

java ×1

swing ×1