gpt4 book ai didi

java - 根据其类型禁用 KeyTyped 事件

转载 作者:太空宇宙 更新时间:2023-11-04 07:50:21 28 4
gpt4 key购买 nike

当我按下任意键时,我会收到 3 个事件:KeyPressed、KeyTyped 和 KeyReleased。对于 KeyPressed 和 KeyReleased 它知道 key 来自哪里,例如键盘。然而,对于 KeyTyped 事件,它似乎失去了它来自键盘的所有知识。知道为什么吗?

这是当我按键盘上的 4 键时的一些 toString:

java.awt.event.KeyEvent[KEY_TYPED,keyCode=0,keyText=Unknown keyCode: 0x0,keyChar='4',keyLocation=KEY_LOCATION_UNKNOWN

如果 KeyPressed 和 KeyReleased 来自键盘,我可以使用它,但我需要对 KeyTyped 执行相同的操作:

@Override
public boolean dispatchKeyEvent(KeyEvent keyEvent) {
if (keyEvent.getKeyLocation() == KeyEvent.KEY_LOCATION_NUMPAD){
keyEvent.consume();
return true;
}
return false;
}

所以我的问题是,如果 KeyTyped 事件来自键盘,如何阻止它发出该事件?

谢谢

最佳答案

文档说:

the location of the key that was pressed or released. Always returns KEY_LOCATION_UNKNOWN for KEY_TYPED events.

原因是 KEY_TYPED 事件是一种逻辑事件,它们只是告诉您已键入某个键,而忽略有关如何键入的低级详细信息。例如:在文本编辑器中,您不需要知道如何键入键或如何生成字符。通常认为尝试了解此类应用程序是一个非常糟糕的主意。

KEY_PRESSEDKEY_RELEASED 是更多的物理事件。例如:在游戏中,当释放或按下时,您可能想要执行不同的操作:按下>>>开始运行,释放>>>>停止运行。因此,了解使用了哪个物理键可能会很有趣,因为您对事件和键盘布局的细节更感兴趣。

关于java - 根据其类型禁用 KeyTyped 事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14584827/

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