任意のキーを押すと、KeyPressed、KeyTyped、KeyReleased の 3 つのイベントを受け取ります。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 イベントを発行しないようにするにはどうすればよいですか?
ありがとう、