如何减少GridLayout中JCheckbox之间的空间

时间:2008-10-20 15:30:11

标签: java swing layout checkbox

我在列中有三个Java JCheckboxes,通过将容器JPanel的布局设置为GridLayout(3, 1, 1, 1)进行排列。当我运行程序时,JCheckBox之间的垂直空间太大;它看起来像超过1个像素。由于我已经将布局中JCheckbox之间的垂直空间设置为1像素,我还能如何减少这些JCheckbox之间的垂直空间?

感谢。

3 个答案:

答案 0 :(得分:3)

我探讨了使用GridLayoutBorderLayoutGridBagLayout,我相信应用程序中存在的任何额外垂直空间都是由于JCheckBox组件的大小调整,而不是相关的到布局管理器。以下所有示例在布局管理器中的组件之间没有空格。

<强> GridLayout的

//Changing to 3,1,1,0 makes slightly smaller (1 pixel) gap vertically 
GridLayout layout = new GridLayout( 3, 1, 1, 0 );
JPanel main = new JPanel( layout );
main.add( new JCheckBox( "box 1" ) );
main.add( new JCheckBox( "box 2" ) );
main.add( new JCheckBox( "box 3" ) );

<强>的GridBagLayout

GridBagConstraints gbc = new GridBagConstraints();
JPanel main = new JPanel( new GridBagLayout() );
gbc.gridx=0;
gbc.gridy=0;
gbc.ipady=0;
main.add( new JCheckBox( "box 1" ), gbc );
gbc.gridy=1;
main.add( new JCheckBox( "box 2" ), gbc );
gbc.gridy=2;
main.add( new JCheckBox( "box 3" ), gbc );

<强> BorderLayout的

JPanel main = new JPanel( new BorderLayout() );
main.add( new JCheckBox( "box 1" ), BorderLayout.NORTH );
main.add( new JCheckBox( "box 2" ), BorderLayout.CENTER );
main.add( new JCheckBox( "box 3" ), BorderLayout.SOUTH );

答案 1 :(得分:3)

如果设置复选框的边框会有帮助吗?

JCheckBox checkBox = new JCheckBox();
checkBox.setBorder(BorderFactory.createEmptyBorder());

这也可能是由于Look&amp;感觉UI代表的渲染。你通常无法控制它。

答案 2 :(得分:0)

谢谢Steve和Alex。你的回答都是正确的。通过将边框设置为空边框,我可以将复选框移近。