2015-03-08 121 views
1

我正在開發一個簡單的語音識別項目。我有一個叫scroll up的命令,我想用這個類按UP鍵。Java機器人不工作

這是代碼:

 else if(resultText.equalsIgnoreCase("scroll up")) 
     { 
      try { 
       Robot robot = new Robot(); 
       robot.delay(5000); 
       robot.keyPress(KeyEvent.VK_UP); 
       robot.delay(1000); 
       robot.keyPress(KeyEvent.VK_UP); 
       robot.delay(1000); 
       robot.keyPress(KeyEvent.VK_UP); 
      } 
      catch (AWTException e){ 
       e.printStackTrace(); 
      } 
     } 

我已經導入這些

import java.awt.AWTException; 
import java.awt.Robot; 
import java.awt.event.KeyEvent; 

現在同樣的代碼效果很好另一個項目,但不是在本項目。我究竟做錯了什麼?

+0

什麼不工作?語法或運行時? – Mordechai 2015-03-08 20:30:46

+0

@MouseEvent當我說'向上滾動'時,它在控制檯中顯示'向上滾動',但沒有任何反應,我的意思是它沒有按下向上按鈕。 – Robin 2015-03-08 20:33:37

+2

Kelsey活動將發送給目前專注的合作伙伴。還請確保您致電keyRelease以及 – MadProgrammer 2015-03-08 20:38:37

回答

2

試試這個:

else if (resultText.equalsIgnoreCase("scroll up")) { 
    try { 
     Robot robot = new Robot(); 
     robot.delay(5000); 
     robot.keyPress(KeyEvent.VK_UP); 

     robot.delay(1000); 
     robot.keyRelease(KeyEvent.VK_UP); 
     robot.keyPress(KeyEvent.VK_UP); 
     robot.delay(1000); 
     robot.keyRelease(KeyEvent.VK_UP); 
     robot.keyPress(KeyEvent.VK_UP); 
     robot.delay(1000); 
     robot.keyRelease(KeyEvent.VK_UP); 

你必須釋放相同的按鈕。

+0

謝謝。但它現在還在工作。 – Robin 2015-03-08 20:18:59

1

從您的評論,我明白,輸入來自命令行(任何時候非常重要的事實,包括在您的文章中)。這意味着命令窗口(或控制檯面板 - 在IDE中)包含系統焦點,因此UP什麼也不做。

在代碼中添加requestFocus(),這應該有所幫助。