從jdk1.3開始,提供了一個Robot類,在java.awt.*包下面。這個類在jdk中描述如下:
此類用於為測試自動化、自運行示範程式和其他需要控制滑鼠和鍵盤的應用程式產生本機系統輸入事件。Robot 的主要目的是便於 Java 平台實現自動化的測試。
使用該類產生輸入事件與將事件發送到 AWT 事件隊列或 AWT 組件的區別在於:事件是在平台的本機輸入隊列中產生的。例如,Robot.mouseMove 將實際移動滑鼠游標,而不是只產生滑鼠移動事件。
注意,某些平台需要特定許可權或擴充來訪問低級輸入控制項。如果當前平台配置不允許使用輸入控制項,那麼試圖構造 Robot 對象時將拋出 AWTException。例如,如果 X 伺服器不支援(或沒有啟用)XTEST 2.2 標準擴充,則 X-Window 系統會拋出異常。
出於自測試之外的目的而使用 Robot 的應用程式應妥善處理這些錯誤條件。
這個類除了類比滑鼠鍵盤操作以外,還可以用來截取螢幕,只示範一下怎麼類比滑鼠鍵盤操作,具體api參考javadoc。這個示範完成了彈出QQ和移動視窗的功能。代碼如下:
import java.awt.AWTException;
import java.awt.Robot;
import java.awt.event.KeyEvent;
/** *//**
* @author bean
*
*/
public class RobotDemo ...{
private Robot robot = null;
public RobotDemo() ...{
try ...{
robot = new Robot();
} catch (AWTException e) ...{
e.printStackTrace();
}
}
/** *//** 可以彈出QQ */
public void keyBoardDemo() ...{
robot.keyPress(KeyEvent.VK_ALT);
robot.keyPress(KeyEvent.VK_CONTROL);
robot.keyPress(KeyEvent.VK_Z);
robot.keyRelease(KeyEvent.VK_Z);
robot.keyRelease(KeyEvent.VK_CONTROL);
robot.keyRelease(KeyEvent.VK_ALT);
}
/** *//** 前提是有個最大化的視窗,功能是移動到標題列,然後拖拽到600,600的位置*/
public void mouseDemo()...{
robot.mouseMove(80, 10);
robot.mousePress(KeyEvent.BUTTON1_MASK);
try ...{
Thread.sleep(20);
} catch (InterruptedException e) ...{
e.printStackTrace();
}
robot.mouseMove(600, 600);
robot.mouseRelease(KeyEvent.BUTTON1_MASK);
}
/** *//**
* @param args
*/
public static void main(String[] args) ...{
RobotDemo demo=new RobotDemo();
demo.keyBoardDemo();
demo.mouseDemo();
}
}