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;
}
});
}
}