gpt4 book ai didi

java - 如何使用 BoxLayout 使组件适合父级宽度?

转载 作者:行者123 更新时间:2023-12-01 20:57:10 28 4
gpt4 key购买 nike

我有带有 BoxLayout Y 轴的 JPanel,并且想要向此面板添加多个 JLabel。标签应适合面板宽度,但仅使用所需的高度。你们中有人能帮我吗?

最佳答案

How to make a component fit parents width using BoxLayout?

BoxLayout 遵循组件的最大尺寸 尺寸。对于 JLabel,首选尺寸和最大尺寸相同,因此标签尺寸不会增加。

因此,您可以重写每个 JLabel 的 getMaximumSize() 方法来执行以下操作:

return new Dimension(getPreferredSize().width, Integer.MAX_VALUE);

然而,更简单的方法是安装面板来为您提供所需的效果。

例如:

JPanel labelPanel = new JPanel( new GridLayout(0, 1) );
labelPanel.add(new JLabel( "one" ) );
labelPanel.add(new JLabel( "two" ) );

JPanel wrapper = new JPanel( new BorderLayout() );
wrapper.add(labelPanel, BorderLayout.PAGE_START);

frame.add(wrapper, BorderLayout.CENTER);

现在 labelPanel 将仅采用所需的高度,但宽度将增长以填充框架的宽度,因此标签宽度也会增长。

不使用嵌套面板的另一个选项是使用GridBagLayout。它支持 fill 约束,允许每个组件调整大小以填充可用空间。

阅读 Swing 教程中关于 Layout Managers 的部分了解更多信息。

关于java - 如何使用 BoxLayout 使组件适合父级宽度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42168039/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com