2012-11-04 76 views
0

所以。我有一個小問題。最喜歡的是因爲我對Java很陌生。無論如何,我的問題是: 爲什麼這不起作用?Java - KeyEvent變量

public static void pressKey(KeyEvent key) throws AWTException { 
    Robot r = new Robot(); 
    r.keyPress(KeyEvent.key); 
    r.keyRelease(KeyEvent.key); 
} 

我該如何得到這樣的工作?這會讓我的生活變得更輕鬆。 thanx提前

回答

1

沒有在KeyEvent稱爲key公共靜態場,這就是爲什麼

//just pass they argument to your method as argument to those methods 
r.keyPress(key); 
r.keyRelease(key); 
1

你必須使用

public static void pressKey(int key) throws AWTException { 
    Robot r = new Robot(); 
    r.keyPress(key); 
    r.keyRelease(key); 
} 

爲它工作

+0

在型機器人的方法按鍵(INT)不適用於參數(KeyEvent)方法 – user1591340

+0

現在如果我用 'pressKey(KeyEvent.VK_C);'我得到 '在類型的方法pressKey(KeyEvent)方法主要是不適用於參數(int)' – user1591340

+0

檢查編輯的答案,應該工作 – thedayofcondor

0

這 '關鍵'變量是一個整數。一個KeyEvent只是一個易於記憶的方式來使用它,但都是整數

這意味着該方法使用整數,而不是KeyEvent

比方說,我們有以下方法:

public static void press(int event) throws AWTException { 
    Robot bot = new Robot(); 
    bot.keyPress(event); 
    bot.keyRelease(event); 
} 

它可以被稱爲通過兩種方式:該KeyEvent和一個整數。所有相同的(不要忘記加上「拋出」語句或「try/catch語句」):

press(KeyEvent.VK_SLASH); 

或者:

press(46); 

如果我是正確的,既會發出斜線(糾正我,如果我錯了)。但KeyEvents更容易。

另外,請記住,並非所有鍵盤都具有相同的佈局。取決於密鑰,將發送完全不同的密鑰,或者更糟糕的是,機器人會拋出IllegalArgumentException。我建議你對不是字母/數字的字符使用Alt代碼。