gpt4 book ai didi

JavaFX KEY_TYPED 事件没有执行任何操作

转载 作者:行者123 更新时间:2023-12-01 19:38:27 27 4
gpt4 key购买 nike

我正在制作一款带有简单库存系统的视频游戏。我正在尝试做到这一点,以便每当您按下“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 进行比较。

API Doc for KeyEvent状态:

For key pressed and key released events, the code variable contains the event's key code. For key typed events, the code variable always contains KeyCode.UNDEFINED.

因此,您将 KeyCode.UNDEFINEDKeyCode.Z 进行比较,两者不匹配。

如果发生按键类型事件,您必须使用 KeyEvent.getCharacter() 并将其与 "Z"

关于JavaFX KEY_TYPED 事件没有执行任何操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56515516/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com