当我按下任意键时,我会收到 3 个事件:KeyPressed、KeyTyped 和 KeyReleased。对于 KeyPressed 和 KeyReleased,它知道密钥来自哪里,例如 KeyPad。但是,对于 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 事件?
谢谢,