为什么一些KeyEvent键码会抛出"IllegalArgumentException:无效的密钥代码"?

And*_*ang 2 java

我正在尝试使用一些进程自动化Robot,而且似乎某些密钥代码(只有在正常输入时需要你保持移位的符号)KeyEvent才会抛出IllegalArgumentException.这是运行的所有代码main:

Robot r = new Robot();
r.keyPress(KeyEvent.VK_EXCLAMATION_MARK);
Run Code Online (Sandbox Code Playgroud)

但是,使用以下解决方法可以正常工作:

Robot r = new Robot();
r.keyPress(KeyEvent.VK_SHIFT);
r.keyPress(KeyEvent.VK_1);
Run Code Online (Sandbox Code Playgroud)

有什么想法抛出异常的想法?谢谢!

Java版本:1.6.0_23

Kar*_*tel 6

因为像Robot.keyPress所说的文档一样,IllegalArgumentExceptionkeycode不表示有效密钥而且VK_EXCLAMATION_MARK不是有效密钥时抛出.

密钥代码用于表示两件事:键盘上的键和"键入字符"事件.键入一个字符通常需要多个按键(按顺序,或同时,或两者).但是Robot.keyPress模拟按键的行为(因此命名),而不是键入字符的行为.

有关更多信息,请参阅KeyEvent的文档:http://download.oracle.com/javase/6/docs/api/java/awt/event/KeyEvent.html