macbook在idea中用java的Robot不生效

2020-07-11  本文已影响0人  爱的旋转体
  • 问题描述:
    java中的java.awt.Robot可以控制系统的鼠标键盘等输入事件,这里不做详细介绍,本文主要是解决在macbook中用idea运行用robot写的java代码不生效的问题。
  • 解决办法:
    macbook需要授予idea控制电脑的权限,操作步骤:
    1)打开系统偏好设置,选择安全性与隐私;
    2)在tab中选择隐私,然后左侧导航栏选择辅助功能;
    3)将idea左侧的对勾选中,如果列表中没有idea,点击加号在应用程序中选择idea,添加进来。
image.png
image.png

1.用下面这段代码做演示(画一个奥运五环)

package com.xzp;
 
import java.awt.*;
import java.awt.event.InputEvent;
 
public class AutoPaint {
    public static void main(String[] args) throws AWTException {
        Robot robot = new Robot();
        robot.delay(3000); //运行代码后,暂停三秒,留够时间去打开电脑自带的画板,并点击形状里面的椭圆形
 
        //1111111111111111111111
        int i = 10;
        while (i-- > 0) {
            robot.mouseMove(400, 300);
        }
        robot.mousePress(InputEvent.BUTTON1_MASK);
        robot.delay(100);       //这里延迟0.1s,可以看到动态画的过程
        i = 10;
        while (i-- > 0) {
            robot.mouseMove(650, 550);
        }
        robot.mouseRelease(InputEvent.BUTTON1_MASK);
        robot.delay(1000);       //画完一个圆停止0.2s,否则因为计算机执行速度太快,看不到动态作图的过程
 
        //222222222222222222222
        i = 10;
        while (i-- > 0) {
            robot.mouseMove(0, 300);
        }
        robot.mousePress(InputEvent.BUTTON1_MASK);
        robot.mouseRelease(InputEvent.BUTTON1_MASK); //画完一个圆后在圆外面点一下鼠标,否则回拖动画的圆到下一个位置
        i = 10;
        while (i-- > 0) {
            robot.mouseMove(600, 300);
        }
        robot.mousePress(InputEvent.BUTTON1_MASK);
        robot.delay(100);       //这里延迟0.1s,可以看到动态画的过程
        i = 10;
        while (i-- > 0) {
            robot.mouseMove(850, 550);
        }
        robot.mouseRelease(InputEvent.BUTTON1_MASK);
        robot.delay(1000);       //画完一个圆停止0.2s,否则因为计算机执行速度太快,看不到动态作图的过程
 
        //3333333333333333333333333 
        i = 10;
        while (i-- > 0) {
            robot.mouseMove(0, 300);
        }
        robot.mousePress(InputEvent.BUTTON1_MASK);
        robot.mouseRelease(InputEvent.BUTTON1_MASK); //画完一个圆后在圆外面点一下鼠标,否则回拖动画的圆到下一个位置
        i = 10;
        while (i-- > 0) {
            robot.mouseMove(800, 300);
        }
        robot.mousePress(InputEvent.BUTTON1_MASK);
        robot.delay(100);       //这里延迟0.2s,可以看到动态画的过程
        i = 10;
        while (i-- > 0) {
            robot.mouseMove(1050, 550);
        }
        robot.mouseRelease(InputEvent.BUTTON1_MASK);
        robot.delay(200);       //画完一个圆停止0.1s,否则因为计算机执行速度太快,看不到动态作图的过程
 
        //44444444444444444444444444
        i = 10;
        while (i-- > 0) {
            robot.mouseMove(0, 300);
        }
        robot.mousePress(InputEvent.BUTTON1_MASK);
        robot.mouseRelease(InputEvent.BUTTON1_MASK); //画完一个圆后在圆外面点一下鼠标,否则回拖动画的圆到下一个位置
        i = 10;
        while (i-- > 0) {
            robot.mouseMove(500, 425);
        }
        robot.mousePress(InputEvent.BUTTON1_MASK);
        robot.delay(100);       //这里延迟0.1s,可以看到动态画的过程
        i = 10;
        while (i-- > 0) {
            robot.mouseMove(750, 675);
        }
        robot.mouseRelease(InputEvent.BUTTON1_MASK);
        robot.delay(200);       //画完一个圆停止0.2s,否则因为计算机执行速度太快,看不到动态作图的过程
 
        //555555555555555555555555
        i = 10;
        while (i-- > 0) {
            robot.mouseMove(0, 300);
        }
        robot.mousePress(InputEvent.BUTTON1_MASK);
        robot.mouseRelease(InputEvent.BUTTON1_MASK); //画完一个圆后在圆外面点一下鼠标,否则回拖动画的圆到下一个位置
        i = 10;
        while (i-- > 0) {
            robot.mouseMove(700, 425);
        }
        robot.mousePress(InputEvent.BUTTON1_MASK);
        robot.delay(100);       //这里延迟0.1s,可以看到动态画的过程
        i = 10;
        while (i-- > 0) {
            robot.mouseMove(950, 675);
        }
        robot.mouseRelease(InputEvent.BUTTON1_MASK);
        robot.delay(200);       //画完一个圆停止0.2s,否则因为计算机执行速度太快,看不到动态作图的过程
 
 
    }
}

2.打开画图工具

3.运行程序,然后在画图工具中选择椭圆

image.png
上一篇下一篇

猜你喜欢

热点阅读