Che*_*lin 8 keyevent keyboard-events javafx-2
我希望我的JavaFX程序能够响应键盘事件.
我尝试将监听器添加到root Pane,最顶层Pane,但它不响应事件!
这是我的代码:
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());
}
}
});
Run Code Online (Sandbox Code Playgroud)
为什么你不工作,关键事件?我在这里做错了吗?
可以肯定的是,鼠标事件可以使用相同的代码正常工作.
Ale*_*rov 12
一种解决方案是向场景添加事件侦听器.因为布局默认没有焦点,所以它们不响应KeyEvents.KeyEvents首先传递给焦点节点.
另一种解决方案是让您的窗格可以聚焦:
root.setFocusTraversable(true)
Run Code Online (Sandbox Code Playgroud)