关于Java中Robot类的简单操作

该博客介绍了如何使用Java的Robot类进行自动化操作,包括移动鼠标、点击、键盘输入等。通过示例代码展示了如何获取屏幕尺寸、鼠标位置,并进行鼠标和键盘事件模拟。此外,还提到了获取鼠标当前位置和屏幕大小等辅助操作。
摘要由CSDN通过智能技术生成

首先贴出robot的官方api: https://docs.oracle.com/javase/8/docs/api/java/awt/Robot.html

最近在项目中,有需要调用第三方控件,找了找资源,需要用到Robot类,在这里贴一个简单的demo,记录下。如果在开发过程中需要用到其他的东西,建议看下上面的api,毕竟,官方的最全。下面上代码:

import java.awt.*;
import java.awt.event.KeyEvent;

public class TestController {

    private static Robot robot;

    public static void main(String[] args) {
        try{
            robot = new Robot();
        }catch (Exception e){
            System.out.println(e.getMessage());
            e.printStackTrace();
        }
        // 是否执行完一个后,再执行下一个
        // 设置为 true, 表示按添加事件的顺序执行(执行完一个再执行下一个)
//        robot.setAutoWaitForIdle(Boolean.TRUE);
        // 移动鼠标到屏幕中央
        // 睡眠指定的时间, 相当于 Thread.sleep(long ms) ,此处传的是int
        robot.delay(5000);
        //移动到屏幕左上角
        robot.mouseMove(-1,-1);
        robot.delay(5000);
        // 在生成一个事件后,自动睡眠5000毫秒
//        robot.setAutoDelay(5000);
        // 获取当前屏幕大小
        Dimension screen=Toolkit.getDefaultToolkit().getScreenSize();
        int width=screen.width; //屏幕宽度,以像素为单位
        int height=screen.height; //屏幕高度
        System.out.println(width);// 运行结果 1280
        System.out.println(height);// 运行结果 720
        // 根据获取到的高度和宽度移动鼠标的位置 :下面的0.43和0.375是根据 控件位置/上面的高宽获得的
        robot.mouseMove(new Double(Math.ceil(width*0.43)).intValue(),new Double(Math.ceil(height*0.375)).intValue());
        robot.delay(5000);
        // 按下鼠标左键
        robot.mousePress(KeyEvent.BUTTON1_DOWN_MASK);
        // 释放鼠标左键(按下后必须要释放, 一次点击操作包含了按下和释放)
        robot.mouseRelease(KeyEvent.BUTTON1_DOWN_MASK);
        robot.delay(5000);
        // 按下键盘的r键
        robot.keyPress(KeyEvent.VK_R);
        System.out.println(KeyEvent.VK_R);// 运行值 82,如果不想用robot提供的,也可以直接输入对应的ASCII码
        robot.keyRelease(KeyEvent.VK_R);
        robot.delay(5000);
        Point location = MouseInfo.getPointerInfo().getLocation();
        System.out.println(location);//运行结果 java.awt.Point[x=550,y=270]
        System.out.println(location.getX());// 运行结果 550
        System.out.println(location.getY());// 运行结果 270
    }
}

从上面的demo可以看出,使用robot可以分为三部分:操作鼠标,操作键盘,控制robot类;
1.操作鼠标:

void mouseMove(int x, int y)   // 移动鼠标

void mousePress(int buttons)   // 按下鼠标

void mouseRelease(int buttons)   // 释放鼠标

void mouseWheel(int wheelAmt)   // 滚动鼠标滚轮,在demo未使用,因为项目没有用到,有兴趣的猿友可以自己试试

2.操作键盘:

void keyPress(int keycode)   // 按下键盘

void keyRelease(int keycode)   // 释放键盘

3.控制robot类:

void delay(int ms)   // 睡眠毫秒数

void setAutoWaitForIdle(boolean isOn)   // 设置是否在生成事件后自动调用下一个事件

void setAutoDelay(int ms)   // 设置在生成事件后自动睡眠的毫秒数

除了robot自己的方法以外,还需要一些辅助的操作,才能帮助我们更好的实现我们想要达到的效果,比如:我demo中使用的
Dimension screen=Toolkit.getDefaultToolkit().getScreenSize();   // 获取屏幕大小

Point location = MouseInfo.getPointerInfo().getLocation();   // 获取鼠标当前位置

当然还有其他的,就不一一说明了。

以上是个人使用robot的相关总结, 希望能和猿友们多多交流,共同进步

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值