java.awt.Robot类的使用

本文介绍了Java AWT Robot类的使用,该类主要用于自动化测试和控制鼠标、键盘操作。通过示例展示了如何创建屏幕截图、模拟键盘输入、移动鼠标以及控制鼠标按键。此外,还列举了常用键位对应的KeyEvent常量,为自动化测试和程序控制提供了便利。
摘要由CSDN通过智能技术生成

java.awt.Robot类的使用

Robot类是java比较有趣的类,主要是来控制鼠标与键盘的操作,API的描述如下:

此类用于生成本机系统输入事件,用于测试自动化,自动运行演示和需要鼠标和键盘控制的其他应用程序。
Robot的主要目的是为了方便Java平台实现的自动化测试。
使用类生成输入事件不同于将事件发布到AWT事件队列或AWT组件,因为事件在平台的本机输入队列中生成。 例如,
Robot.mouseMove实际上将移动鼠标光标,而不是仅生成鼠标移动事件

主要的方法

方法描述返回
createScreenCapture(Rectangle screenRect)创建包含从屏幕读取的像素的图像BufferedImage
delay(int ms)睡眠指定时间
keyPress(int keycode)按下给定的键
keyRelease(int keycode)释放给定的键
mouseMove(int x, int y)将鼠标指针移动到给定的屏幕坐标
mousePress(int buttons)按一个或多个鼠标按钮
mouseRelease(int buttons)释放一个或多个鼠标按钮
mouseWheel(int wheelAmt)旋转鼠标滚轮

我们对其中主要的方法进行试验:

  1. createScreenCapture(Rectangle screenRect) :创建包含从屏幕读取的像素的图像。 此图像不包括鼠标光标。可以利用此方法编写一个截图工具
		Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();  //获取当前屏幕尺寸
        Rectangle rectangle = new Rectangle(screenSize);	
        BufferedImage screenCapture = new Robot().createScreenCapture(rectangle);
        ImageIO.write(screenCapture,"png",new File("./screenShot.png"));`//保存截图
  1. keyPress(int keycode), keyRelease(int keycode): 按下或松开一个指定的键,直接看示例
		Robot robot = new Robot();
        robot.keyPress(KeyEvent.VK_A);  //按下键盘A
        robot.keyRelease(KeyEvent.VK_A);//松开键盘A

要注意,此方法只是模拟键盘输入,所以小写的情况下,要输入大写的A,应该再控制按下shift或者大小写切换键

		Robot robot = new Robot();
        robot.keyPress(KeyEvent.VK_SHIFT); //按下shift
        robot.keyPress(KeyEvent.VK_A);
        robot.keyRelease(KeyEvent.VK_A);
        robot.keyRelease(KeyEvent.VK_SHIFT);//松开shift
  1. mouseMove(int x, int y):移动鼠标光标到指定位置
		//控制鼠标在屏幕指定位置画圆圈
		Robot robot = new Robot();
		double r = 300d;   //半径
        double x = 600d,y = 600d;  //画圆位置
        double start = 0d;   //每次移动改变的角度
        while (true){
            robot.mouseMove((int)(r*Math.cos(start)+x),(int)(r*Math.sin(start)+y));//鼠标移动
            robot.delay(50);//休眠一段时间,减慢画圆的速度,可以更好的观测
            start += 0.1d;  //角度每次增加0.1,保证鼠标平滑的移动
            if(start>100)  //退出条件,防止一直画不停
                break;
        }
  1. mousePress(int buttons),mouseRelease(int buttons):按下或释放鼠标键位
		Robot robot = new Robot();
        robot.mousePress(KeyEvent.BUTTON1_MASK);  //鼠标左键按下
        robot.mouseRelease(KeyEvent.BUTTON1_MASK);//鼠标左键抬起
  1. mouseWheel(int wheelAmt):移动鼠标滚轮的“凹口”数量,负值表示向上,正值表示向下
		Robot robot = new Robot();
        robot.mouseWheel(-1000);

常用键位与KeyEvent常量对应关系

键位KeyEvent常量
VK_CONTROLCtrl
VK_HOMEHome
VK_ALTAlt
VK_SHIFTshift
VK_CAPS_LOCK大小写锁定
VK_TABtab
VK_ESCAPEEsc
VK_ENTER回车
VK_ENDEnd
VK_BACK_SPACEBackspace
VK_LEFT左箭头
VK_RIGHT右箭头
VK_UP上箭头
VK_DOWN下箭头
VK_F1–VK_F12F1-F12
VK_0 --VK_90-9
VK_A --VK_ZA-Z
BUTTON1_MASK鼠标左键
BUTTON3_MASK鼠标右键
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值