GESTION DES ÉVÈNEMENTS
Pour attribuer une action à un bouton, il va falloir lui ajouter un listener, un écouteur d'action. En
java, un écouteur d'action est un ActionListener. Il faudra donc définir qui va être l'écouteur de notre
bouton, dans notre cas, on va dire que c'est la fenêtre elle-même, qui va écouter notre bouton pour ne rien
compliquer. Car on peut aussi créer une autre classe qui ferait office d'écouteur. Pour qu'une classe puisse
être écouteuse d'action, il faut qu'elle implémente, l'interface ActionListener. Pour cela, il vous suffira
d'ajouter dans le signature de la classe implements ActionListener. Ainsi, la signature de notre classe
deviendra :
public class TestBouton extends JFrame implements ActionListener{
Sans oublier d'importer ActionListener et ActionEvent :
import java.awt.event.*;
Si vous travaillez avec un EDI tel qu'eclise , vous verrez que cette ligne, vous mettra des erreurs. Car,
quand on implémente une interface, il faut qu'on définisse ces différentes méthodes, dans notre cas,
ActionListener, possède seulement la méthode actionPerformed(ActionEvent e) qui va être appelée à
chaque fois que l'écouteur reçoit un événement. On va donc ajouter cette méthode dans notre classe :
public void actionPerformed(ActionEvent e) {
}
Ensuite, on va ajouter l'écouteur à notre bouton :
bouton1.addActionListener(this);//On ajoute la fenêtre en tant qu'écouteur du bouton
Avec ce code, il n'y a toujours rien qui se passe, mais c'est normal, puisque l'on ne rien fait dans la
méthode actionPerformed.
Maintenant, il va falloir définir une action dans le listener pour notre bouton. On va donc mettre cette
action dans la méthode actionPerformed. Dans notre cas, comme on n'a qu'un seul bouton qui est écouté
par la méthode, on pourrait se permettre de mettre directement l'action dans la méthode, mais pour
prendre de bonnes habitudes, on va d'abord contrôler que l'action émane bien de notre bouton. Pour savoir
d'où vient l'action, on dispose de l'événement passé en paramètre de la méthode actionPerformed, cet
événement possède une méthode getSource(), qui va nous dire d'où vient l'action.
Si par exemple, on veut qu'à chaque clic sur le bouton, ça affiche un nombre dans notre label et que ce
nombre augmente à chaque clic, il va falloir faire quelque chose du genre :
public void actionPerformed(ActionEvent e) {
if(e.getSource() == bouton1){ //Si l'action émane bien du bouton
nombre++; //On incrémente nombre de 1
texte.setText("Vous avez cliqué " + nombre + " fois sur le bouton");
}
}
Ainsi, avec cette méthode, dès que vous « cliquerez », le texte de bienvenue s'effacera, pour laisser place
à un 1. Et ensuite, à chaque clic, le nombre augmentera.