[英]Why are some KeyEvent keycodes throwing “IllegalArgumentException: Invalid key code”?
我正在嘗試使用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
因為就像Robot.keyPress
的文檔所說的那樣,當keycode
不代表有效鍵並且VK_EXCLAMATION_MARK
不是有效鍵時會引發IllegalArgumentException
。
鍵碼用於表示兩件事:鍵盤上的鍵和“輸入字符”事件。 鍵入一個字符通常需要多次按鍵(按順序,或同時,或兩者兼而有之)。 但是Robot.keyPress
模擬按鍵的行為(因此得名),而不是輸入字符的行為。
有關更多信息,請參閱 KeyEvent 的文檔: http://download.oracle.com/javase/6/docs/api/java/awt/event/KeyEvent.ZFC35FDC70D5FC69D2693883A822C75A
我不知道Robot
,但這不是因為它需要按下兩個鍵才能插入感嘆號。
鍵盤上沒有感嘆號鍵。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.