Intercepter tous les evenements clavier

L'ajout d'un listener sur KeyboardFocusManager permet d'intercepter les touches appuyées sur le clavier au plus tôt. Sur l'ensemble du JFrame, l'écouteur envoie les évènements clavier avant d'être transmis au control détenant la focalisation.
Dans l'exemple, toutes les touches de la fenêtre sont interceptées et modifiées en caractère majuscule.
import java.awt.KeyEventDispatcher;
import java.awt.KeyboardFocusManager;
import java.awt.event.KeyEvent;

/**
 * Intercepter l'appui de touche
 */
public class KeybordHook {

    public static void main(String[] args) {
        KeyboardFocusManager.getCurrentKeyboardFocusManager().addKeyEventDispatcher(new KeyEventDispatcher() {

            @Override
            public boolean dispatchKeyEvent(KeyEvent e) {
                // Filtre: mettre toutes les lettres en majuscules
                if (e.getID() == KeyEvent.KEY_TYPED) {
                    char c = e.getKeyChar();
                    if (Character.isLowerCase(c)) {
                        c = Character.toUpperCase(c);
                        e.setKeyChar(c);
                    }
                }
                //return true: supprime l'event de la queue de message
                return false;
            }
        });
    }
}
 
Ajouter un commentaire
Pseudo
Adresse email
Site internet (optionnel)
Votre commentaire
Fiche de l'article
Mise a jour07/09/2010
VisualisationVu 783 fois
PublicInternaute
CategorieJAVA - Sources - AWT
Auteur de l'article
Axel Axel
connecté le 20/09/2011
28 ans - France Sud-Est
41 articles dans la section
Contacter l'auteur
Partager l'article