Nicht hören KeyEvent in JavaFX
Ich will mein JavaFX-Programm zu reagieren auf Tastatur-Ereignisse.
Ich habe versucht, das hinzufügen Zuhörer root Pane
zu obersten Pane
ist, aber es nicht auf Ereignisse reagieren zu können!
Hier ist mein 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());
}
}
});
WARUM U NICHT ARBEITEN, werden wichtige Ereignisse? Mache ich etwas falsch hier?
Um sicher zu sein, Maus-events gut funktioniert mit dem gleichen code.
- Add listener-Szene?
- danke, das klappt.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Eine Lösung ist, fügen Sie einen Ereignis-listener, um die Szene. Da die layouts nicht den Fokus haben, standardmäßig, so dass Sie nicht reagieren auf KeyEvents. KeyEvents werden an der fokussierte Knoten zuerst.
Andere Lösung ist, um Ihren Bereich fokussierbar:
((KeyEvent)t).getCharacter()
stattdessen((KeyEvent)e).getText()
stellen Sie außerdem sicher, das Sie importieren die richtige KeyEvent als in
import javafx.Szene.input.KeyEvent;
anstatt der KeyEvent von awt