javafx-2 - 无法在 JavaFX 中监听 KeyEvent

标签 javafx-2 keyboard-events keyevent

我希望我的 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());
            }
        }
    });

为什么你不工作,关键事件?我在这里做错了吗?
可以肯定的是,鼠标事件可以在相同的代码中正常工作。

最佳答案

一种解决方案是向场景添加事件监听器。因为默认情况下布局没有焦点,所以它们不响应 KeyEvents。 KeyEvents 首先传递到焦点节点。

另一种解决方案是使您的 Pane 可聚焦:

root.setFocusTraversable(true)

关于javafx-2 - 无法在 JavaFX 中监听 KeyEvent,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16834997/

相关文章:

javascript - 如何在 div 上定位 "shift keydown & click"的事件?

javascript - 我需要一个脚本来检测所有浏览器上的所有长按或连续按键

安卓发送键崩溃

Java KeyListener.keyPressed 在按住键时多次触发

java - 子字符串和 Vector.add 的问题

java - 应用程序错误:java: module not found: javafx.

ant - 将 JavaFX 应用程序打包为 NetBeans 中的单个 jar

JavaFX如何在不同窗口中的两个 Controller 之间进行通信

javascript - 如何限制或限制此函数调用中的函数调用次数(以提高性能)?

javascript - 操作系统独立的键盘事件到字符映射