Impossible d'écouter KeyEvent en JavaFX
Je veux que mon JavaFX programme pour répondre à des événements de clavier.
J'ai essayé d'ajouter les auditeurs à la racine Pane
, supérieur Pane
, mais il ne doit pas répondre à des événements!
Voici mon code:
AnchorPane root = new AnchorPane();
root.setOnKeyPressed(new EventHandler<KeyEvent>() {
@Override
public void handle(KeyEvent t) {
pressKey(t.getCharacter().charAt(0));
}
});
root.setOnKeyReleased(new EventHandler<KeyEvent>() {
@Override
public void handle(KeyEvent t) {
releaseKey(t.getCharacter().charAt(0));
}
});
root.addEventHandler(EventType.ROOT, new EventHandler<Event>() {
@Override
public void handle(Event t) {
if (t.getClass().equals(KeyEvent.class)) {
System.out.println("AAARGH! " + ((KeyEvent)t).getCharacter());
}
}
});
POURQUOI U N TRAVAIL d'événements? Suis-je en train de faire quelque chose de mal ici?
Pour être sûr, les événements de la souris fonctionne très bien avec le même code.
Ajout d'un écouteur sur scène?
merci, cela fonctionne.
merci, cela fonctionne.
OriginalL'auteur Chechulin | 2013-05-30
Vous devez vous connecter pour publier un commentaire.
Une solution consiste à ajouter un écouteur d'événement à la scène. Parce que les dispositions n'ont pas d'accent par défaut, de sorte qu'ils ne répondent pas sur KeyEvents. KeyEvents sont passés à la porté de noeud premier.
Une autre solution est de faire de votre volet peut recevoir le focus:
OriginalL'auteur Alexander Kirov
((KeyEvent)t).getCharacter()
au lieu d'utiliser((KeyEvent)e).getText()
OriginalL'auteur Elmer Duron
assurez-vous également que vous importez le bon KeyEvent comme dans
import javafx.de la scène.d'entrée.KeyEvent;
plutôt que de la KeyEvent de awt
OriginalL'auteur PCannon