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