BoxLayout 面板内的项目不占用 JPanel 的宽度
Item inside BoxLayout panel not occupying width of 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()
方法重写为 return 以上大小。如果动态更改按钮的属性,这将起作用。
下面的面板有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()
方法重写为 return 以上大小。如果动态更改按钮的属性,这将起作用。