2011-07-09 55 views
2

我試圖使用Robot自動化一些進程,並且在KeyEvent中看起來某些鍵碼(只有在正常輸入時需要按住shift鍵的符號)纔會拋出IllegalArgumentException。這是在main運行的所有代碼:爲什麼一些KeyEvent鍵碼拋出「IllegalArgumentException:無效的鍵碼」?

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

回答

6

因爲像Robot.keyPress的文檔中所述,當keycode不代表有效密鑰,並且VK_EXCLAMATION_MARK不是有效密鑰時,會引發IllegalArgumentException

鍵碼用於表示兩件事:鍵盤上的鍵和「鍵入的字符」事件。鍵入字符通常需要多次按鍵(按順序,或同時或兩者)。但Robot.keyPress模擬按鍵(因此名稱)的行爲,而不是鍵入字符的行爲。請參閱KeyEvent的文檔:http://download.oracle.com/javase/6/docs/api/java/awt/event/KeyEvent.html

1

我不知道Robot,但是,這不是因爲它需要按下一個驚歎號兩個鍵插入。

鍵盤上沒有感嘆號鍵。

相關問題