2008-10-20 7 views
4

J'ai trois Java JCheckboxes dans une colonne, arrangé en définissant la disposition du conteneur JPanel à GridLayout(3, 1, 1, 1). Quand je cours le programme, il y a trop d'espace vertical entre les JCheckBoxes; il ressemble à plus de 1 pixel. Puisque j'ai déjà défini l'espace vertical entre les JCheckboxes dans la mise en page à 1 pixel, comment puis-je réduire l'espace vertical entre ces JCheckbox?Comment réduire l'espace entre JCheckboxes dans GridLayout

Merci.

Répondre

3

Je GridLayout explorées avec, BorderLayout et GridBagLayout et je crois que tout espace vertical supplémentaire qui est présent dans votre application est en raison de la taille du composant JCheckBox, non lié au gestionnaire de mise en page. Tous les exemples ci-dessous n'ont pas d'espace entre les composants dans le gestionnaire de disposition.

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

Est-il utile i f vous définissez la bordure de la case à cocher?

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

Il peut également être dû au rendu de l'interface utilisateur de Look & Feel délégué. Vous avez généralement peu de contrôle sur cela.

0

Merci Steve et Alex. Vos deux réponses étaient correctes. En définissant la bordure sur une bordure vide, j'ai pu rapprocher les cases.

Questions connexes