2011-06-07 3 views
2

J'ai une liste de cases à cocher, mais je ne peux pas faire de sélection multiple à partir de cette liste, cela désactive la sélection précédente lorsque je coche une nouvelle case. comment puis-je changer mon code? ou si ça a l'air ok et par accident je fais quelque chose de mal ailleurs dans mon code.Problème de sélection multiple sur Swing JCheckbox

public JPanel createMultiMenu(ArrayList<String> domainItems) { 

    checkBoxMenuPanel = new JPanel(); 
    checkBoxMenuPanel.setLayout(new GridBagLayout()); 
    GridBagConstraints gbc = new GridBagConstraints(); 
    gbc.gridx = 0; 
    gbc.gridy = GridBagConstraints.RELATIVE; 
    gbc.anchor = GridBagConstraints.WEST; 

    ButtonGroup group = new ButtonGroup(); 
    for (String item : domainItems) { 
     JCheckBox checkBox = new JCheckBox(item); 
     group.add(checkBox); 
     checkBoxMenuPanel.add(checkBox,gbc);   
    } 
    return checkBoxMenuPanel; 
} 

Répondre

2

Le problème est que vous utilisez ButtonGroup, qui traite les objets placés en lui comme des boutons radio (vous ne pouvez en sélectionner qu'un seul à la fois).

Essayez plutôt de simplement les ajouter au JPanel.

public JPanel createMultiMenu(ArrayList<String> domainItems) { 

    checkBoxMenuPanel = new JPanel(); 
    checkBoxMenuPanel.setLayout(new GridBagLayout()); 
    GridBagConstraints gbc = new GridBagConstraints(); 
    gbc.gridx = 0; 
    gbc.gridy = GridBagConstraints.RELATIVE; 
    gbc.anchor = GridBagConstraints.WEST; 


    for (String item : domainItems) { 
     JCheckBox checkBox = new JCheckBox(item); 
     checkBoxMenuPanel.add(checkBox, gbc);   
    } 
    return checkBoxMenuPanel; 
} 

Quelque chose comme ça.

4

C'est la façon dont fonctionne un ButtonGroup, vous pouvez sélectionner un bouton dans le groupe mais seulement 1 peut être sélectionné à la fois. Aussi généralement un JRadioButton est utilisé pour cela.

Si vous voulez pouvoir cocher plusieurs cases, n'utilisez pas un ButtonGroup.

+0

ok et que dois-je utiliser à la place? ce code fonctionne bien en termes de problèmes d'alignement. Je veux sélectionner plusieurs valeurs non seulement un – Spring

+1

@XDeveloper. Sortez la ligne qui dit 'group.add (checkBox)'. Pouvez-vous vérifier plusieurs cases maintenant? – Atreys

+0

oui travaillé merci – Spring

2

Peut-être avez-vous besoin de JRadioButtons? Utilisez ButtonGroup et ajoutez tous les radiobuttons du groupe. Après cela, si vous sélectionnez l'un d'eux précédemment sélectionné perd l'état sélectionné.

+0

désolé, je ne peux pas faire de sélection multiple de cette liste, – Spring