5

コンテナJCheckboxesのレイアウトJPanelGridLayout(3, 1, 1, 1). プログラムを実行すると、JCheckBox 間の垂直方向のスペースが大きすぎます。1ピクセル以上のように見えます。レイアウト内の JCheckbox 間の垂直方向のスペースを 1 ピクセルに設定したので、これらの JCheckbox 間の垂直方向のスペースを減らすにはどうすればよいでしょうか?

ありがとう。

4

3 に答える 3

3

GridLayoutBorderLayout、およびを使用して調査しまし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" ) );

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

チェックボックスの境界線を設定すると役に立ちますか?

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

ルックアンドフィールのUIデリゲートのレンダリングが原因である可能性もあります。通常、これを制御することはほとんどできません。

于 2008-10-21T11:26:15.020 に答える
0

スティーブとアレックス、ありがとう。あなたの回答はどちらも正解でした。ボーダーを空のボーダーに設定することで、チェックボックスを近づけることができました。

于 2008-10-21T14:50:05.357 に答える