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
Libérer: 2024-12-06 00:07:10
original
689 Les gens l'ont consulté

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;
Copier après la connexion

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;
    }
  }
});
Copier après la connexion

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;
  }
}
Copier après la connexion

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.
}
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal