Objectif : Application simple Java utilisant deux objets de classe JCheckBox et JRadioButton.
- Même exemple, code source en Delphi
1° cas d'un seul composant conteneur
La fenêtre d'exemple comporte 3 cases à cocher (jCheckBox1, jCheckBox2, jCheckBox3 : JCheckBox) et 3 boutons radios (jRadioButton1, jRadioButton2, jRadioButton3 : JRadioButton):
L'application dans cet exemple n'exécute aucune action (seul le click sur le composant est intéressant et se programme comme pour n'importe quel autre bouton de classe JButton par exemple). Nous observons seulement le comportement d'action en groupe en Java de ces boutons.
6 boutons ont été déposés sur la fenêtre (classe JFrame de type conteneur) :
Comme le montre l'image ci-haut, tous les radios boutons et les cases à cocher peuvent être cochés en même temps (contrairement au comportement des radios boutons de Delphi)
2° cas de plus d'un composant conteneur
La fenêtre d'exemple comporte :
- 5 cases à cocher (jCheckBox1, jCheckBox2, jCheckBox3, jCheckBox4, jCheckBox5 : JCheckBox),
- 5 boutons radios (jRadioButton1, jRadioButton2, jRadioButton3, jRadioButton4, jRadioButton5 : JRadioButton),
- et un conteneur de type panneau (jPanel1 : JPanel).
jCheckBox1, jCheckBox2, jCheckBox3 sont déposés sur le conteneur fenêtre JFrame,
jRadioButton1, jRadioButton2, jRadioButton3 sont aussi déposés sur le conteneur fenêtre JFrame,
jCheckBox4, jCheckBox5 sont déposés sur le conteneur panneau JPanel,
jRadioButton4, jRadioButton5 sont déposés sur le conteneur panneau JPanel,Voici le résultat obtenu :
Tous les composants peuvent être cochés, ils n'ont donc pas de comportement de groupe quel que soit le conteneur auquel ils appartiennent. IL faut en fait les rattacher à un groupe qui est représenté en Java par la classe ButtonGroup.
3° regroupement de boutons s'excluant mutuellement
La classe ButtonGroup peut être utilisée avec n'importe quel genre d'objet dérivant de la classe AbstractButton comme les JCheckBox, JRadioButton, JRadioButtonMenuItem, et aussi les JToggleButton et toute classe héritant de AbstractButton qui implémente une propriété de sélection.
3°-a Décidons dans l'exemple précédent de créer 2 objets de classe ButtonGroup que nous nommerons groupe1 et groupe2.
ButtonGroup Groupe1 = new ButtonGroup( );
ButtonGroup Groupe2 = new ButtonGroup( );3°-b Nous rattachons au Groupe1 tous les composants déposés sur le JPanel ( jCheckBox4, jCheckBox5, jRadioButton4 et jRadioButton5 font alors partie du même groupe d'exclusion mutuelle) :
Groupe1.add(jCheckBox1);
Groupe1.add(jCheckBox2);
Groupe1.add(jCheckBox3);
Groupe1.add(jRadioButton1);
Groupe1.add(jRadioButton2);
Groupe1.add(jRadioButton3);3°-c Nous rattachons au Groupe2 tous les composants déposés sur le JFrame ( jCheckBox1, jCheckBox2, jCheckBox3, jRadioButton1, jRadioButton2 et jRadioButton3 font donc partie d'un autre groupe d'exclusion mutuelle).
Groupe2.add(jCheckBox4);
Groupe2.add(jCheckBox5);
Groupe2.add(jRadioButton4);
Groupe2.add(jRadioButton5);Voici le résultats obtenu :
Sur les 6 boutons déposés sur le JFrame seul un seul peut être coché, il en est de même pour les 4 boutons déposés sur le JPanel.
Pas de code Java particulier