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

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

我在用GroupLayout管理动态生成的数据输入表单中的组件。布局大致如下:

*-----------------------------------------------*

| label A     |   field A                       | 

| label B     |   field B                       |

| label C     |   field C                       |

*-----------------------------------------------*

我在水平布局中使用两个并行组,对垂直布局使用一个顺序组。在大多数情况下,一切都很正常。

我想限制标签的最大宽度(这只是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());}

有人能建议一种限制标签宽度的方法吗?

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


噜噜哒
浏览 1610回答 2
2回答

千巷猫影

这是一个很明显的例子,所以谢谢你。您提供的代码与我自己已经实现的代码几乎相同,但关键是“您不需要为大多数组件…指定任何内容,因为组件本身具有默认的调整大小行为”。我认为我的标签需要是覆盖getPreferredSize()的自定义实现。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java