Il est parfois utile de détecter les événements issus du clavier, tels que les touches appuyées ou relâchées. Cet exemple met en œuvre un objet de type KeyListener de façon à détecter tous ces événements, et à les afficher sur une étiquette placée dans une fenêtre.
/* ############################################################################
*
* TestKeyListener.java : démonstration de la capture d'événements issus du
* clavier.
*
* Auteur : Christophe Jacquet, Supélec
*
* Historique
* 2006-12-19 Création
*
* ############################################################################
*/
import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.SwingUtilities;
/**
* Programme de test des KeyListener : affiche une fenêtre où un JLabel
* affiche les codes de touches appuyées et relâchées.
*/
public class TestKeyListener extends JFrame {
private static final long serialVersionUID = -5222658361778310082L;
private TestKeyListener() {
// création de la fenêtre
super("TestKeyListener");
// ajout d'un seul composant dans cette fenêtre : un JLabel
JLabel label = new JLabel("Pressez une touche...");
add(label, BorderLayout.CENTER);
// ajoute un écouteur d'événements personnalisé à la fenêtre
addKeyListener(new TitreKeyListener(label));
// réglage des dimensions de la fenêtre
setPreferredSize(new Dimension(300, 100));
pack();
}
public static void main(String[] args) {
// construit une fenêtre de type TestKeyListener et l'affiche
SwingUtilities.invokeLater(new Runnable() {
public void run() {
JFrame frame = new TestKeyListener();
frame.setVisible(true);
}
});
}
}
/**
* Implémente l'interface KeyListener (écouteur d'événements clavier) :
* lorsqu'une touche est appuyée ou relâchée, affiche le code de touche
* correspondant dans un objet JLabel qui doit être fourni au constructeur.
*/
class TitreKeyListener implements KeyListener {
private final JLabel label;
public TitreKeyListener(JLabel label_) {
label = label_;
}
public void keyPressed(KeyEvent e) {
label.setText("Touche pressée : " + e.getKeyCode() +
" (" + e.getKeyChar() + ")");
}
public void keyReleased(KeyEvent e) {
label.setText("Touche relâchée : " + e.getKeyCode() +
" (" + e.getKeyChar() + ")");
}
public void keyTyped(KeyEvent e) {
// on ne fait rien
}
}