image.png
- 问题描述:
java中的java.awt.Robot可以控制系统的鼠标键盘等输入事件,这里不做详细介绍,本文主要是解决在macbook中用idea运行用robot写的java代码不生效的问题。- 解决办法:
macbook需要授予idea控制电脑的权限,操作步骤:
1)打开系统偏好设置,选择安全性与隐私;
2)在tab中选择隐私,然后左侧导航栏选择辅助功能;
3)将idea左侧的对勾选中,如果列表中没有idea,点击加号在应用程序中选择idea,添加进来。
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,否则因为计算机执行速度太快,看不到动态作图的过程
}
}
网友评论