1. 程式人生 > >Java模擬滑鼠鍵盤輸入事件 --- Robot 類

Java模擬滑鼠鍵盤輸入事件 --- Robot 類

Robot,機器人。此類用於為測試自動化、自執行演示程式和其他需要控制滑鼠和鍵盤的應用程式生成本機系統輸入事件。Robot 的主要目的是便於 Java 平臺實現自動測試。

Robot 可以模擬滑鼠和鍵盤的輸入,相當於 Java 版的按鍵精靈

Robot 構造方法:

// 在基本螢幕座標系中構造一個 Robot 物件, 如果平臺不支援 Robot, 將丟擲異常
Robot()

// 為給定螢幕裝置建立一個 Robot(用於同時使用多個顯示裝置的情況)
Robot(GraphicsDevice screen)

模擬滑鼠的方法:

// 將滑鼠指標移動到指定螢幕座標
void mouseMove(int
x, int y) /** * 按下/釋放一個或多個滑鼠按鈕, 引數說明: * buttons: 滑鼠按鈕掩碼, 一個或多個以下標誌的組合: * InputEvent.BUTTON1_MASK 滑鼠左鍵 * InputEvent.BUTTON2_MASK 滑鼠中鍵 * InputEvent.BUTTON3_MASK 滑鼠右鍵 */ void mousePress(int buttons) void mouseRelease(int buttons) // 在配有滾輪的滑鼠上旋轉滾輪 void mouseWheel(int
wheelAmt)

模擬鍵盤的方法:

/**
 * 按下/釋放鍵盤按鍵, 引數說明:
 *     keycode: 鍵盤鍵值常量, 定義在 KeyEvent.VK_XXX 中
 */
void keyPress(int keycode)
void keyRelease(int keycode)

螢幕相關方法:

// 獲取指定螢幕座標處的畫素顏色
Color getPixelColor(int x, int y)

// 截圖, 擷取指定的矩形區域
BufferedImage createScreenCapture(Rectangle screenRect)

控制類方法:

// 睡眠指定的時間, 相當於 Thread.sleep(long ms)
void delay(int ms) // 在處理完當前事件佇列中的所有事件之前, 一直等待 void waitForIdle() // 設定此 Robot 在生成一個事件後是否自動呼叫 waitForIdle() // 設定為 true, 表示新增的事件逐個按順序執行(執行完一個再執行下一個) void setAutoWaitForIdle(boolean isOn) boolean isAutoWaitForIdle() // 設定此 Robot 每在生成一個事件後自動睡眠的毫秒數 void setAutoDelay(int ms) int getAutoDelay()

一般開發步驟模(模擬滑鼠事件):

package com.xiets.robot;

import java.awt.*;
import java.awt.event.InputEvent;

public class Main {

    public static void main(String[] args) throws AWTException {
        // 建立 Robot 例項
        Robot robot = new Robot();

        // 執行完一個事件後再執行下一個
        robot.setAutoWaitForIdle(true);

        // 移動滑鼠到指定螢幕座標
        robot.mouseMove(100, 100);

        // 按下滑鼠左鍵
        robot.mousePress(InputEvent.BUTTON1_MASK);

        // 延時100毫秒
        robot.delay(100);

        // 釋放滑鼠左鍵(按下後必須要釋放, 一次點選操作包含了按下和釋放)
        robot.mouseRelease(InputEvent.BUTTON1_MASK);
    }

}