繁体   English   中英

JavaFX KEY_TYPED事件无所作为

[英]JavaFX KEY_TYPED events are doing nothing

我正在用简单的库存系统制作视频游戏。 我试图做到这一点,以便每当您按下“ Z”键时,它就会显示或隐藏库存GUI。 我不知道为什么,但是KEY_TYPED键事件不起作用。 KEY_PRESSED和KEY_RELEASED键事件运行正常。

这是我的关键事件处理程序类:

public static KeyCode handle(javafx.scene.input.KeyEvent e) {
    if (e.getEventType() == javafx.scene.input.KeyEvent.KEY_PRESSED) {
        e.consume();
        return e.getCode();
    }

    if (e.getEventType() == javafx.scene.input.KeyEvent.KEY_RELEASED) {
        e.consume();
        return e.getCode();
    }

    if (e.getEventType() == javafx.scene.input.KeyEvent.KEY_TYPED) {
        e.consume();
        return e.getCode();
    }

    return null;
}

这是我正在使用的关键事件的位置:

    primaryStage.getScene().setOnKeyTyped(event -> {
        KeyCode e = KeyEvent.handle(event);

        if (e == KeyCode.Z) {
            System.out.println("test");
        }
    });

当我尝试按该键时,它什么也没做。

在KEY_TYPED事件上,您从事件中提取代码并从处理程序中返回代码 ,然后将其与KeyCode.Z进行比较。

KeyEventAPI文档规定:

对于按下按键和释放按键的事件,code变量包含事件的按键代码。 对于键类型的事件,代码变量始终包含KeyCode.UNDEFINED。

因此,您正在将KeyCode.UNDEFINED与不会匹配的KeyCode.Z进行比较。

如果是键键入事件,则必须使用KeyEvent.getCharacter()并将其与"Z"进行比较

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM