创建具有特定字段的KeyEvent
问题描述:
我将如何去改变生成的KeyEvent的字段?从键盘创建具有特定字段的KeyEvent
java.awt.event.KeyEvent[KEY_PRESSED,
keyCode=65,
keyText=A,
keyChar='a',
keyLocation=KEY_LOCATION_STANDARD,
rawCode=65,
primaryLevelUnicode=97,
scancode=30,
extendedKeyCode=0x41] on panel0
实际KeyEvent的生成的KeyEvent
java.awt.event.KeyEvent[KEY_PRESSED,
keyCode=65,
keyText=A,
keyChar='a',
keyLocation=KEY_LOCATION_STANDARD,
rawCode=0,
primaryLevelUnicode=0,
scancode=0,
extendedKeyCode=0x0] on panel0
new KeyEvent(component, KeyEvent.KEY_PRESSED, System.currentTimeMillis(), 0, 65, 'a')
差异
rawCode
primaryLevelUnicode
scancode
extendedKeyCode
有没有一种方法我可以设置的KeyEvent对象上这些领域?
文档https://docs.oracle.com/javase/7/docs/api/java/awt/event/KeyEvent.html
答
望着在KeyEvent
类的源代码,看来你不能设置这些:
//set from native code.
private transient long rawCode = 0;
private transient long primaryLevelUnicode = 0;
private transient long scancode = 0; // for MS Windows only
private transient long extendedKeyCode = 0;
这是私人的,并从本地代码(所以在Java中没有变化)设置。