【问题标题】:Why are some KeyEvent keycodes throwing "IllegalArgumentException: Invalid key code"?为什么某些 KeyEvent 键码会抛出“IllegalArgumentException:无效键码”?
【发布时间】:2011-07-09 11:11:30
【问题描述】:

我正在尝试使用Robot 自动化一些流程,似乎KeyEvent 中的某些键码(只有在正常键入时需要按住shift 的符号)正在抛出IllegalArgumentException。这是main中运行的所有代码:

Robot r = new Robot();
r.keyPress(KeyEvent.VK_EXCLAMATION_MARK);

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

Robot r = new Robot();
r.keyPress(KeyEvent.VK_SHIFT);
r.keyPress(KeyEvent.VK_1);

任何想法为什么抛出异常?谢谢!

Java 版本:1.6.0_23

【问题讨论】:

    标签: java


    【解决方案1】:

    因为就像Robot.keyPress 的文档所说,当keycode 不代表有效密钥并且VK_EXCLAMATION_MARK 不是有效密钥时,会抛出IllegalArgumentException

    键码用于表示两件事:键盘上的键和“输入字符”事件。键入一个字符通常需要多次按键(按顺序,或同时,或两者兼而有之)。但Robot.keyPress 模拟按键的行为(因此得名),而不是输入字符的行为。

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

    【讨论】:

      【解决方案2】:

      我不知道Robot,但这不是因为它需要按下两个键才能插入感叹号。

      键盘上没有感叹号键。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-03-13
        • 1970-01-01
        • 2017-12-12
        相关资源
        最近更新 更多