L'événement : objet de la classe Event
Lorsque l'utilisateur a manipulé un composant graphique
(par exemple appui sur un bouton poussoir), l'interprèteur construit
un objet contenant des renseignements du moment de cette manipulation.
Un tel objet est appelé un événement.
Il existe plusieurs sortes d'événement
comme les ActionEvent. Ces classes dérivent de la classe
Event. Lorsqu'on repère un événement par
une référence
evt, on peut connaître le composant
graphique qui a été manipulé par l'utilisateur par
le code :
evt.getSource();
Programmation par délégation
Pour traiter un événement, il faut avoir associé un objet au composant graphique. Cet autre objet "délégué" au travail de traitement des évenements est dit "à l'écoute" des actions sur le composant graphique et est appellé un "listener". Cette technique de programmation est dite programmation par délégation.
Pour créer un listener un des moyens est d'écrire
:
new MaClasseListener();
où
MaClasseListener est une classe créée
par le programmeur (vous-même !!).
Cette classe doit être une classe qui implémente
une interface spécifique du composant graphique.
On doit donc avoir un code comme :
class MaClasseListener implements <typeEvenement>Listener
Par exemple :
class MaClasseListener implements ActionListener
Ceci oblige la classe a donné un code aux méthodes
déclarées dans <typeEvenement>Listener.
Sinon il y a une erreur à la compilation : c'est
le but et la raison même de la notion d'interface (pas d'interface
graphique !!) de Java.
Ces méthodes seront lancées lors d'une
certaine action de l'utilisateur sur le composant graphique ce qui explique
la nécessité de donner une tel code et la volonté
de Java de vérifier au moment de la compilation, qu'un tel code
a été donné.
L'association (composantGraphique, listener) est effectué
à l'aide d'une méthode
add<typeEvenement>Listener(<typeEvenement>Listener)
Exemple pour un bouton poussoir
import java.awt.*;
import java.awt.event.*;
•••
Button bt = new Button("Mon Bouton");
EcouteurBouton ecouteur = new EcouteurBouton();
bt.addActionListener(ecouteur);
•••
class EcouteurBouton implements ActionListener {
public void actionPerformed(ActionEvent e)
{
System.out.println("Coucou");
}
}
Remarques syntaxiques
1°) Les interfaces <typeEvenement>Listener
sont définies dans le paquetage java.awt.event et il est
donc conseillé d'écrire :
import java.awt.event.*;
en en-tête des fichiers .java.
2°) Très souvent les classes auditeurs sont
définies à "l'intérieur" de la classe de l'interface
graphique. Ce sont des classes internes. L'intérêt majeur
est d'accéder facilement dans ces classes internes aux composants
graphiques définis dans la classe englobante.