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

标签 java swing layout-manager boxlayout

我有带有 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/

相关文章:

java - 如何在边框布局中添加多个按钮

java - 无法正确对齐标签

java - 如何使用(la4j 库的)抽象迭代器?

Java 反射 : Count of methods with an annotation?

Java swing JLabel 未显示

java - 将 JPanel 添加到 JFrame

java - 没有布局管理器的响应式 JFrame

java - 输入 if 语句

java - SimpleCaptcha 和 wav 播放

swing - Windows XP 上的 Java Swing 弹出菜单上的助记符(带下划线的字母)