5

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

谢谢。

4

3 回答 3

3

GridLayout我使用、BorderLayout和进行了探索,GridBagLayout并且我相信应用程序中存在的任何额外垂直空间都是由于 JCheckBox 组件的大小,与布局管理器无关。下面的所有示例在布局管理器中的组件之间都没有空格。

网格布局

//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" ) );

网格包布局

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 );

边框布局

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 );
于 2008-10-20T17:11:37.850 回答
2

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

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

这也可能是由于 Look & Feel 的 UI 委托的渲染。您通常对此几乎没有控制权。

于 2008-10-21T11:26:15.020 回答
0

谢谢史蒂夫和亚历克斯。你的两个回答都是正确的。通过将边框设置为空边框,我可以将复选框移近一些。

于 2008-10-21T14:50:05.357 回答