Surveillance continue des frappes utilisateur en Java
Dans ce scénario, l'objectif est de vérifier en permanence si un utilisateur appuie sur une touche spécifique, telle que comme touche "w".
Contrairement à d'autres langages, Java n'a pas de fonction native pour vérifier directement les pressions sur les touches. Au lieu de cela, il utilise une approche basée sur l'écouteur pour gérer les événements clés.
Solution : KeyEventDispatcher
Pour surveiller efficacement les événements clés, Java fournit la classe KeyEventDispatcher. Cette classe vous permet d'ajouter un écouteur à la file d'attente d'événements Java AWT (Abstract Window Toolkit) et de recevoir des notifications lorsqu'une touche est enfoncée ou relâchée.
Implémentation :
private static volatile boolean wPressed = false;
Cette variable indiquera si la touche "w" est enfoncée.
KeyboardFocusManager.getCurrentKeyboardFocusManager().addKeyEventDispatcher(new KeyEventDispatcher() { @Override public boolean dispatchKeyEvent(KeyEvent ke) { synchronized (IsKeyPressed.class) { switch (ke.getID()) { case KeyEvent.KEY_PRESSED: if (ke.getKeyCode() == KeyEvent.VK_W) { wPressed = true; } break; case KeyEvent.KEY_RELEASED: if (ke.getKeyCode() == KeyEvent.VK_W) { wPressed = false; } break; } return false; } } });
Cette classe anonyme remplace la méthode dispatchKeyEvent pour gérer la clé événements.
public static boolean isWPressed() { synchronized (IsKeyPressed.class) { return wPressed; } }
Cette méthode se synchronise sur l'objet de classe pour garantir la sécurité des threads et renvoie la valeur de la variable wPressed.
if (IsKeyPressed.isWPressed()) { // Execute actions when the "w" key is pressed. }
En utilisant cette approche, vous pouvez surveiller en permanence les événements clés et effectuer des actions spécifiques en fonction des pressions sur les touches.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!