Comment placer un écouteur sur un JButton ?
Les composants Swing de type JButton peuvent recevoir un écouteur d’événement pour détecter les actions accomplis sur ce bouton. Pour ce faire, Swing propose l’interface actionListener. Cette interface dispose d’une méthode nommée actionPerformed qui détermine comment l’interface graphique doit réagir s’il l’on presse sur un JButton disposant d’un écouteur.
Dans cet exemple, je place un écouteur d’événement dans les deux JButton, ensuite je détermine la source de l’événement grâce) la méthode getActionCommand. Cette méthode (getActionCommand) renvoi le label du JButton appelé par cette méthode. La méthode getActionCommand peut être fort pratique lorsque notre interface graphique possède plusieurs JButton, et que l’on souhaite savoir précisément quel JButton à été pressé par l’utilisateur, par exemple. Identifier la source d’un événement, quel est le composant dans notre fenêtre qui a déclenché une action.
Je commence par crée une classe que je nomme Main (à ne pas confondre avec la méthode main faisant office de porte d’entrée d’un programme java), je place la méthode main classique dans ma classe Main. Ceci afin de bien distinguer mes classes.
Image ActionListener sur JButton:

package actionListener;
// imports des classes utiles pour placer un écouteur d'événements sur un JButton
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.Container;
import java.awt.FlowLayout;
import javax.swing.JButton;
import javax.swing.JFrame;
public class Main {
public static void main(String[] args){
Fenetre fen = new Fenetre();
}
}
class Fenetre extends JFrame {
Fenetre(){
JButton bouton1 = new JButton("bouton 1");
JButton bouton2 = new JButton("bouton 2");
setSize(400,200);
setTitle("Ma fenetre");
setVisible(true);
Container contenu = getContentPane(); // la méthode getContentPane renvoie le contenu de notre JFrame
contenu.add(bouton1);
contenu.add(bouton2);
contenu.setLayout(new FlowLayout()); // FlowLayout assemble les composant en "float" (l'un après l'autre)
bouton1.addActionListener(new EcouteurBouton());
bouton2.addActionListener(new EcouteurBouton());
}
}
class EcouteurBouton implements ActionListener { // on implemente l'interface ActionListener, et on surcharge la méthode ActionPerformed()
@Override
public void actionPerformed(ActionEvent arg0) {
String label = arg0.getActionCommand(); // la méthode getActionCommand nous renvoi le label du JButton qui déclenche l'événement.
System.out.println("coucou, il s'agit d'un événement sur " + label);
}
}