Même si les interfaces graphiques ne sont pas notre objectif dans
cette formation, on ne serait pas complet si on ne parlait pas de la gestion
des événements. Il serait inutile d'affiche un bouton si
on ne peut pas affecter une action à un clic sur ce bouton.
Les événements en Java, quelqu'ils soient, sont tous
gérés de la même façon. Ils sont gérés
à l'aide de Listener. Ce sont des écouteurs d'événements.
Les écouteurs sont des interfaces, il suffit donc d'implémenter
l'action que l'on souhaite voir effectuer par ce Listener. Il existe
un Listener pour chaque type d'événement possible. Voici un
exemple pour répondre à un clic sur un bouton :
import javax.swing.*;
import java.awt.event.*;
public class SwingListener {
static JButton b1, b2;
static JTextField tf;
public static void main(String argv[]) {
JFrame f = new JFrame("Evénements Swing");
f.setSize(140, 120);
f.getContentPane().setLayout(null);
b1 = new JButton("Bouton 1");
b1.setBounds(20, 10, 100, 20);
f.getContentPane().add(b1);
b2 = new JButton("Bouton 2");
b2.setBounds(20, 35, 100, 20);
f.getContentPane().add(b2);
tf = new JTextField();
tf.setBounds(20, 60, 100, 20);
f.getContentPane().add(tf);
class SymAction implements ActionListener {
public void actionPerformed(ActionEvent event) {
try {
Object object = event.getSource();
if (object == b1) {
tf.setText("Bouton 1");
}
else if (object == b2) {
tf.setText("Bouton 2");
}
}
catch (Exception e) {}
}
}
SymAction listener = new SymAction();
b1.addActionListener(listener);
b2.addActionListener(listener);
f.setVisible(true);
}
}
Et voici une capture d'écran
du résultat :

|