gpt4 book ai didi

java - 如果在生成字符时发生了 KEY_TYPED 事件,那么为什么 KeyEvent 的代码参数包含 VK_UNDEFINED?

转载 作者:行者123 更新时间:2023-11-30 07:04:15 26 4
gpt4 key购买 nike

I am thinking from Java help:The complete reference(8th Ed) by Herbert Schildt to learn about Java.在阅读时,我发现 KEY_TYPED 事件仅在生成字符时发生。那不是说生成了一个字符(0-9,A-Z)吗?如果是这样,那么不应该将相应的 ASCII 等效项作为 代码 传递给 KeyEvent 构造函数:

KeyEvent(Component src, int type, long when, int modifiers, int code, char ch)

但是书上说,对于 KEY_TYPED 事件,代码将包含 VK_UNDEFINED。这里的代码不是用键入的键定义的吗?

最佳答案

这是因为 KEY_TYPED 事件不一定有相应的 VK 代码。 VK 代码来自键盘,代表一个键。如果我按下“a”键,我将看到一个带有 VK_A 代码的按键事件。现在,正如您所说,KEY_TYPED 事件在生成字符时发生。问题是,字符是由操作系统在通过取决于语言环境的字符映射转换 VK 代码后生成的。

例如,在我的键盘上,我可以使用特定的键组合键入“ö”。这将触发一系列带有 VK_SHIFT、VK_DEAD_CIRCUMFLEX 和 VK_O 的按键事件,但只有一个 KEY_TYPED 事件,带有 'ö' 字符。更糟糕的是,我可以通过按 6 个键 (ALT+0+1+4+1+4) 来键入“†”,但同样只会触发一个 KEY_TYPED 事件。现在,您会在事件中放入什么 VK 代码?这实际上没有任何意义,因此他们决定始终将 VK_UNDEFINED 保持一致,即使是简单的字符也是如此。

关于java - 如果在生成字符时发生了 KEY_TYPED 事件,那么为什么 KeyEvent 的代码参数包含 VK_UNDEFINED?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27787477/

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