吴志勇的博客 吴志勇的博客
  • h5

    • HTML5&CSS3
  • scss

    • css预处理语言
  • JavaScript

    • JavaScript教程
    • Ajax
    • ES6教程
    • NodeJS
    • Typescript
  • 框架

    • Jquery
    • VUE
    • React
  • Swing专题
  • java基础
  • javaweb
  • 框架
  • 数据库
  • netty
  • 设计模式
  • 微服务及架构
  • 云原生
  • maven
  • 单元测试
工具
我的
  • 分类
  • 标签
  • 归档
GitHub (opens new window)

吴志勇

......
  • h5

    • HTML5&CSS3
  • scss

    • css预处理语言
  • JavaScript

    • JavaScript教程
    • Ajax
    • ES6教程
    • NodeJS
    • Typescript
  • 框架

    • Jquery
    • VUE
    • React
  • Swing专题
  • java基础
  • javaweb
  • 框架
  • 数据库
  • netty
  • 设计模式
  • 微服务及架构
  • 云原生
  • maven
  • 单元测试
工具
我的
  • 分类
  • 标签
  • 归档
GitHub (opens new window)
  • Swing专题

    • swing图形化界面简介

    • JavaSwing布局管理器

    • JavaSwing基本组件

    • JavaSwing面板组件

    • JavaSwing其他组件

    • JavaSwing相关特性

    • 扩展:JavaAWTSwing其他相关

      • Java绘图-使用Graphics类绘制线段、矩形、椭圆圆弧扇形、图片、文本
      • Java图片操作-图片的读取、绘制、缩放、裁剪、保存
      • Java代码截屏:使用Java代码截取电脑屏幕并保存
      • Java模拟鼠标键盘输入事件-Robot类
      • Java操作桌面应用-Desktop类
      • Java操作系统剪贴板(Clipboard)实现复制和粘贴
  • java基础

  • javaweb

  • 框架

  • Maven
  • 单元测试
  • 动态代理
  • 数据库

  • netty

  • 设计模式

  • 微服务及架构

  • 云原生

  • Velocity模板引擎
  • 后端
  • Swing专题
  • 扩展:JavaAWTSwing其他相关
wuzhiyong
2024-09-18

Java模拟鼠标键盘输入事件-Robot类

官方JavaDocsApi: java.awt.Robot (opens new window)

Robot,机器人。此类用于为测试自动化、自运行演示程序和其他需要控制鼠标和键盘的应用程序生成本机系统输入事件。Robot 的主要目的是便于 Java 平台实现自动测试。

Robot 可以模拟鼠标和键盘的输入,相当于 Java 版的按键精灵。

Robot 构造方法:

// 在基本屏幕坐标系中构造一个 Robot 对象, 如果平台不支持 Robot, 将抛出异常
Robot()

// 为给定屏幕设备创建一个 Robot(用于同时使用多个显示设备的情况)
Robot(GraphicsDevice screen)
1
2
3
4
5

模拟鼠标的方法:

// 将鼠标指针移动到指定屏幕坐标
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)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15

模拟键盘的方法:

/**
 * 按下/释放键盘按键, 参数说明:
 *     keycode: 键盘键值常量, 定义在 KeyEvent.VK_XXX 中
 */
void keyPress(int keycode)
void keyRelease(int keycode)
1
2
3
4
5
6

屏幕相关方法:

// 获取指定屏幕坐标处的像素颜色
Color getPixelColor(int x, int y)

// 截屏, 截取指定的矩形区域
BufferedImage createScreenCapture(Rectangle screenRect)
1
2
3
4
5

控制类方法:

// 睡眠指定的时间, 相当于 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()
1
2
3
4
5
6
7
8
9
10
11
12
13
14

一般开发步骤模(模拟鼠标事件):

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

}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#swing
上次更新: 2024-09-19 12:17:39

← Java代码截屏:使用Java代码截取电脑屏幕并保存 Java操作桌面应用-Desktop类→

Copyright © 2020-2025 wuzhiyong
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式