Les boutons en Java AWT : création, événements et types
Les boutons
Pour créer un bouton, il faut déclarer un objet de type Button : Button bouton = new Button("Button");
Le bouton affiché dans le panneau est impliqué dans la formation de l'événement lorsqu'il est cliqué. On peut également utiliser son identification de bouton d'événement lorsque celui-ci se produit.
Événements des boutons
Chaque fois qu'un utilisateur appuie sur un bouton, un événement est produit. De la même manière, un événement est produit lorsque le bouton de la souris est relâché. Les événements de type clic peuvent surcharger la méthode action() :
public boolean action(Event evt, Object obj) {
if (evt.target instanceof Button)
System.out.println((String) obj);
else
System.out.println("Event No-Button");
return true;
}La distinction entre les différents boutons existants peut être faite en utilisant l'objet cible adopté par l'objet événement et en le comparant aux objets bouton placés sur l'interface :
import java.awt.*;
import java.applet.Applet;
public class Boutons extends Applet {
Button b1, b2, b3;
public void init() {
b1 = new Button("Button B1");
b2 = new Button("Button B2");
b3 = new Button("Button B3");
this.add(b1);
this.add(b2);
this.add(b3);
}
public boolean action(Event evt, Object obj) {
if (evt.target.equals(b1))
System.out.println("Vous avez appuyé sur le bouton B1");
if (evt.target.equals(b2))
System.out.println("Vous avez appuyé sur le bouton B2");
if (evt.target.equals(b3))
System.out.println("Vous avez appuyé sur le bouton B3");
return true;
}
}Boutons de liste
Les boutons de sélection en liste (Choice) permettent un accès rapide à une liste de choix. Par exemple, on peut implémenter une sélection de couleurs avec un bouton de type choix :
import java.awt.*;
import java.applet.Applet;
public class BoutonSelection extends Applet {
Choice selector;
public void init() {
selector = new Choice();
selector.addItem("Rouge");
selector.addItem("Vert");
selector.addItem("Bleu");
add(selector);
}
public boolean action(Event evt, Object obj) {
if (evt.target instanceof Choice)
{
String couleur = (String) obj;
System.out.println("La couleur choisie est " + couleur);
}
return true;
}
}La méthode action() renvoie dans l'argument obj l'élément choisi dans la liste. Le gestionnaire d'événements de sélection place ainsi à disposition l'événement généré par le choix d'un élément.
Boutons à cocher
Les cases à cocher (Checkbox) sont fréquemment utilisées comme des boutons d'état. Elles indiquent si une option est active (vrai) ou non (faux). L'état est renvoyé dans l'argument booléen obj de l'événement. Le nom de la case et son état peuvent aussi être obtenus par les méthodes getLabel() et getState() de l'objet Checkbox.
import java.awt.*;
import java.applet.Applet;
public class BoutonComprobacion extends Applet {
Checkbox remplir;
public void init() {
remplir = new Checkbox("Remplir");
add(remplir);
}
public boolean action(Event evt, Object obj) {
if (evt.target instanceof Checkbox)
System.out.println("CheckBox " + evt.arg.toString());
return true;
}
}Boutons de sélection
Les cases à cocher peuvent aussi former un groupe de boutons radio (CheckboxGroup) : l'ensemble des cases regroupées n'autorise qu'une seule sélection à la fois.
import java.awt.*;
import java.applet.Applet;
public class BoutonRadio extends Applet {
CheckboxGroup radio;
public void init() {
radio = new CheckboxGroup();
add(new Checkbox("Première", radio, true));
add(new Checkbox("Seconde", radio, false));
add(new Checkbox("Troisième", radio, false));
}
}Dans l'exemple précédent, on observe que le bouton de notification reste toujours actif sur le bouton 1 : les notifications ne sont pas gérées de la façon attendue sans traitement supplémentaire dans la méthode action().
Boutons autonomes
La nature orientée objet de Java permet de créer des boutons autonomes, entièrement encapsulés. Dans ce cas, le gestionnaire d'événements est intégré à la classe du bouton lui-même. On peut ajouter ces boutons à l'application sans se soucier des événements qu'ils peuvent générer.
import java.awt.*;
import java.applet.Applet;
class BoutonOK extends Button {
public BoutonOK() {
setLabel("OK");
}
public boolean action(Event evt, Object obj) {
System.out.println("Bouton OK");
return true;
}
}
public class BoutonAuto extends Applet {
Button ok;
public void init() {
ok = new BoutonOK();
add(ok);
}
}Il convient de noter qu'il n'y a pas de méthode action() dans la classe applet BoutonAuto : la classe BoutonOK se charge de ses propres événements. Si d'autres objets avaient été placés dans l'applet, une méthode action() aurait pu être utilisée pour traiter leurs événements.