如何解决BoxLayout 面板内的项目不占用 JPanel 的宽度
面板下方有BoxLayout,底部的按钮不占用面板的宽度,而是在左侧和右侧有间隙。
JPanel panel = new JPanel();
BoxLayout Boxlayout = new BoxLayout(panel,BoxLayout.Y_AXIS);
panel.setLayout(Boxlayout);
JPanel framesPanel[] = new JPanel[8];
for(int i=0;i<8;i++) {
framesPanel[i] = new JPanel();
framesPanel[i].setLayout(new BoxLayout(framesPanel[i],BoxLayout.X_AXIS));
JButton jb1 = new JButton("Button 1");
jb1.setAlignmentX(Component.LEFT_ALIGNMENT);
JButton jb2 = new JButton("Button 2");
jb2.setAlignmentX(Component.LEFT_ALIGNMENT);
JButton jb3 = null;
framesPanel[i].add(jb1);
framesPanel[i].add(jb2);
if (i < 6) {
jb3 = new JButton("Button 3");
jb3.setAlignmentX(Component.LEFT_ALIGNMENT);
framesPanel[i].add(jb3);
}
panel.add(framesPanel[i]);
}
// Set size for the frame
panel.setSize(300,300);
frame.setSize(300,300);
// Set the window to be visible as the default to be false
frame.add(panel);
我尝试过 setAlignmentX(Component.LEFT_ALIGNMENT) 但这似乎没有任何效果。
解决方法
A BoxLayout
尊重组件的最大尺寸。
按钮的最大尺寸与其首选尺寸相同。
当您创建按钮时,您可以执行以下操作:
JButton button = new JButton(...);
Dimension maximum = button.getMaximumSize();
maximum.width = Integer.MAX_VALUE;
button.setMaximumSize( maximum );
注意:
如果您从不更改按钮的字体大小,这只是一个快速修复。对于正确的解决方案,您应该真正创建一个自定义按钮来扩展 JButton 并覆盖 getMaximumSize()
方法以返回上述大小。然后,如果按钮的属性动态更改,这将起作用。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。