Bonjour,
Pouvez vous me dire comment cocher automatiquement une checkbox ?
J'ai essayé CB.setSelected // CB.setEnable mais sans succès...
Merci beaucoup !
Yokooo
Version imprimable
Bonjour,
Pouvez vous me dire comment cocher automatiquement une checkbox ?
J'ai essayé CB.setSelected // CB.setEnable mais sans succès...
Merci beaucoup !
Yokooo
quel type de checkbox? Il y a plein de classe "checkbox" en java :)
Il faudrait préciser de quel composant tu parles !
Est-ce que tu utilises du SWT, du AWT, ou autre ?
Voila je vais vous poster la manière dont je procède :
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14 public Panel() { this.cbA = new JCheckBox(); this.cbB = new JCheckBox(); this.cbC = new JCheckBox(); ... public HashMap<String, ArrayList<String>> getTagSuffixs() { if (this.cbA.isSelected()) { System.out.println("C'est bon"); cbB.setEnabled(); cbC.setEnabled(); }
Voila, en gros si je coche A je veux que B et C le soit également. J'ai zappé pas mal de code inutile, j'ai pas tout mis.
Merci
c'est setSelected(true/false) pour changer l'état d'un JCheckBox. setEnabled(false/true) permet de griser ou non la composant (et le rendre ou non utilisable par l'utilisateur). Bien sur, si tu veux un changement automatique (je coche A, ça coche B et C), il faut ajouter un itemListener à A (cbA.addItemListener) et dans le listener, methode itemStateChanged, faire le travail:
Code:
1
2
3
4
5
6
7
8 public void itemStateChanged(ItemEvent e) { if (e.getStateChange() == ItemEvent.SELECTED){ cbB.setSelected(); cbC.setSelected(); }
Parfait tout fonctionne, j'explique vite fait pour ceux que ça pourrait aider. J'ai rajouté une classe interne à mon autre classe :
et après la création de ma check box cbA j'ai rajouté cette ligne qui crée un listener :Code:
1
2
3
4
5
6
7
8
9
10
11
12 class ItemState implements ItemListener{ public void itemStateChanged(ItemEvent e) { if (e.getStateChange() == ItemEvent.SELECTED){ cbB.setSelected(true); cbC.setSelected(true); } } }
Encore merci ;)Code:cbA.addItemListener(new ItemState());
Hummm par contre je voulais faire l'inverse mais je ne vois pas comment faire.
Je m'explique... par exemple j'ai une check box "Boite 1" avec à côté 3 check box "Bille 1", "Bille 2" et "Bille 3"
En gros si je clique sur Bille 1, Bille 2 ou Bille 3 à côté de ma boite 1, elle se sélectionne automatiquement et si je clique sur Bille 1, Bille 2 ou Bille 3 à côté de ma boite 2, elle se sélectionne également. Sachant que j'ai plusieurs boites.
J'ai imbriqué mes listener dans ma boucle "for" qui scrute mes boites mais je rencontre un problème lors de la création de ma classe ItemState car il faudrait que je puisse récupérer ma variable i (qui correspond au numéro de la boite)
Dans ma boucle for :
Me suis je bien exprimer ?Code:
1
2
3 bille1[i].addItemListener(new State()); bille2[i].addItemListener(new State()); bille3[i].addItemListener(new State());
P.S: Modification effectuée, je m'étais trompé dans mon explication
N'ayant pas eu de réponse j'ai décidé de tout faire manuellement, voici pour ceux que ça peut intéresser :
Dans ma boucle for qui crée mes check box Bille 1 Bille 2 .... J'ai mis :
Et ensuite dans ma classe interne State j'ai fais ça :Code:
1
2
3 bille1[i].addItemListener(new State()); bille2[i].addItemListener(new State()); bille3[i].addItemListener(new State());
Je n'ai pas fait de boucle for car dans certaines boite j'avais bille4 et pas bille3 donc ça mettais une erreurCode:
1
2
3
4
5
6
7
8
9
10
11 class State implements ItemListener{ public void itemStateChanged(ItemEvent e) { if (bille1[0].isSelected() || bille2[0].isSelected() || bille3[0].isSelected()){ boite[0].setSelected(true); } if (bille1[1].isSelected() || bille2[1].isSelected() || bille3[0].isSelected()){ boite[1].setSelected(true); } ........ etc
P.S: Désolé tchize pour le mp
Bonjour,
ce que tu peu faire c'est dans ton listener State metre un attribut comtenant le numero de la boite
Code:
1
2
3
4
5
6
7
8
9
10
11
12 class State implements ItemListener { private int numero; public State(int i) { numero=i; } [..] bille1[i].addItemListener(new State(i)); bille2[i].addItemListener(new State(i)); bille3[i].addItemListener(new State(i));
Je ne comprend pas trop... (je suis débutant hein ! ^^)
donc en fait je mettrais :
Code:
1
2
3
4
5
6
7 .... public State(int i) { numero=i; boite[numero].setSelected(true); }
j'ai juste écrit le constructeur de State.
la class complète ressemblerai a:
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13 class State implements ItemListener { private int numero; public State(int i) { numero=i; } public void itemStateChanged(ItemEvent e) { if (bille1[i].isSelected() || bille2[i].isSelected() || bille3[i].isSelected()) boite[i].setSelected(true); } }
non ça ne marche pas car en fait j'ai des boites ou il n'y a pas de bille3 mais des bille4 donc ça met une erreur.
Le principal c'est que ça marche ;)
Merci !
alors la il faut voir tu a quoi dans le tableau bille4 quand il n'y en a pas (null je supose?)
dans ce cas pour tester aussi les bille4:
;)Code:if (bille1[i].isSelected() || bille2[i].isSelected() || bille3[i].isSelected() || bille4[i]!=null && bille4[i].isSelected())
(mais tu ne devrai pas avoir d'erreur quand meme :s)
Félicitations ! :)
ça marche avec les !=null
MERCI beaucoup et bien joué ! ^^ J'aurais jamais trouvé :ccool:
de rien :)