Maison >Java >javaDidacticiel >Comment puis-je surveiller en permanence les pressions sur des touches spécifiques en Java ?

Comment puis-je surveiller en permanence les pressions sur des touches spécifiques en Java ?

DDD
DDDoriginal
2024-12-06 00:07:10693parcourir

How Can I Continuously Monitor Specific Key Presses in Java?

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 :

  1. Déclarer un booléen au niveau de la classe Variable :
private static volatile boolean wPressed = false;

Cette variable indiquera si la touche "w" est enfoncée.

  1. Créer un KeyEventDispatcher :
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.

  1. Méthode de vérification de la pression sur les touches :
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.

  1. Utilisation de la Fonction :
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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn