從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();
- }
- }