Boutons radio et cases à cocher

Boutons radio et cases à cocher sont représentés par la classe CheckBox. Des objets de type CheckBox regroupés dans un objet de type CheckBoxGroup donneront des boutos radio. Par contre, isolés ils donneront des cases à cocher.

Un exemple

Ecrivons une applet qui affiche un cercle. Un groupe de boutons radio permet de choisir le rayon (petit, moyen ou grand) et une case à cocher permet de déterminer si le cercle est plein ou non.

L'interface ItemListener

Les changements d'état des objets de type CheckBox génèrent un évènement de type ItemEvent. On définit un écouteur de ce type d'évènement en utilisant l'interface ItemListener. Celle-ci impose la présence de la méthode :

	public void itemStateChanged(ItemEvent e) {
	}

Notre applet sera l'écouteur associé aux différents onbjets de type CheckBox.

Les champs de l'applet

Pour pouvoir vérifier l'état des boutons radio et de la case à cocher, nous allons créer des champs les contenant.

Ceci nous donne la déclaration suivante :

	import java.awt.*;
	import java.applet.*;
	import java.awt.event.*;

	public class BoutonRadio extends Applet 
	 implements ItemListener { 
	  // le groupe des boutons radio
	  CheckboxGroup groupeRadio = new CheckboxGroup();
	  Checkbox petit = new Checkbox("petit",groupeRadio,false);
	  Checkbox moyen = new Checkbox("moyen",groupeRadio,true);
	  Checkbox grand = new Checkbox("grand",groupeRadio,false);
	  // la case à cocher
	  Checkbox disque = new Checkbox("disque",false);

Notons que le bouton "moyen" est sélectionné grâce au paramètre true, les autres ne le sont pas.

L'initialisation

Nous utiliserons la méthode init pour définir les couleurs utilisées, insérer les objets de type CheckBox et définir leurs écouteurs. Cela donne :

	public void init() {
	 setBackground(Color.yellow);
	 setForeground(Color.red);
	 add(petit);
	 add(moyen);
	 add(grand);
	 add(disque);
	 petit.addItemListener(this);
	 moyen.addItemListener(this);
	 grand.addItemListener(this);
	 disque.addItemListener(this);
	}

La méthode paint

Avant de dessiner le cercle nous allons tester les boutons radio pour déterminer le rayon. Leur méthode getState() indique s'ils sont cochés ou non. Lorsque le rayon est déterminé, nous calculons les coordonnées permettant d'afficher le cercle au centre. Enfin, l'état de la case "plein" nous indique s'il faut dessiner un cercle plein ou non. On obtient le code suivant :

	public void paint(Graphics g) {
	 int rayon=0;
	 if (petit.getState()) rayon=10;
	 else if (moyen.getState()) rayon=50;
	 else if (grand.getState()) rayon=100;
	 int x=(getSize().width-2*rayon)/2;
	 int y=(getSize().height-2*rayon)/2;
	 if (disque.getState())
	  g.fillOval(x,y,2*rayon,2*rayon);
	 else
	  g.drawOval(x,y,2*rayon,2*rayon);
	}

L'écoute des évènements

Il nous reste à écrire la méthode itemStateChanged qui est applelée lors d'un changement d'état des objets de type CheckBox. Il nous suffira de faire un appel à la méthode repaint de l'applet, puisque la méthode paint tient compte de l'état des boutons. Ceci nous donne :

	public void itemStateChanged(ItemEvent e) {
	 repaint();
	}



Retour au menu