Как уменьшить пространство между JCheckboxes в GridLayout - PullRequest
4 голосов
/ 20 октября 2008

У меня есть три Java JCheckboxes в столбце, организованные путем установки макета контейнера JPanel на GridLayout(3, 1, 1, 1). Когда я запускаю программу, между JCheckBoxes слишком много вертикального пространства; это выглядит как более 1 пикселя. Поскольку я уже установил вертикальное пространство между JCheckboxes в макете равным 1 пикселю, как еще можно уменьшить вертикальное пространство между этими JCheckboxes?

Спасибо.

Ответы [ 3 ]

3 голосов
/ 21 октября 2008

Поможет ли установить границу флажка?

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

Это также может быть связано с рендерингом делегата пользовательского интерфейса Look & Feel. У вас обычно мало контроля над этим.

3 голосов
/ 20 октября 2008

Я исследовал с использованием GridLayout, BorderLayout и GridBagLayout, и я считаю, что любое дополнительное вертикальное пространство, присутствующее в вашем приложении, связано с размером компонента 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 );
0 голосов
/ 21 октября 2008

Спасибо, Стив и Алекс. Оба ваших ответа были правильными. Установив границу пустой границы, я смог переместить флажки ближе.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...