Thread.sleep()和mouseMove()的问题

时间:2014-01-29 16:44:00

标签: java bluej

我希望在5秒(5000毫秒)后将光标从坐标(500,500)移动到新坐标(1000,200)。我希望每次程序运行时都会发生这个事件,这就是为什么我做了一个循环。但是当我运行程序时,光标只出现在坐标(500,500)处,并且它不会移动到坐标(1000,200)。我需要建议。

import java.awt.Robot;
import java.util.Random;

public class MouseMovers {

    public static  int SECONDS = 5000;
    public static  int MAX_Y =500;
    public static  int MAX_X =500;

    public static void main(String [] args) throws Exception {
        Robot robot = new Robot();
        Robot rob=new Robot();

        while (true) {
            robot.mouseMove(MAX_X, MAX_Y);
            Thread.sleep(SECONDS);
            rob.mouseMove(1000,200);
        }
    }
}

3 个答案:

答案 0 :(得分:4)

您的代码每五秒钟将鼠标移动到(1000,200),然后立即移动到(500,500)。在第二次移动后添加另一个延迟,使鼠标停留在该位置一段时间:

    while (true) {
        robot.mouseMove(MAX_X, MAX_Y);
        Thread.sleep(SECONDS);
        robot.mouseMove(1000, 200);
        Thread.sleep(SECONDS);
    }
顺便说一下:你只需要一个机器人。

答案 1 :(得分:0)

while (true) {
    robot.mouseMove(MAX_X, MAX_Y);
    Thread.sleep(SECONDS);
    rob.mouseMove(1000,200);
}

这是一个循环。这意味着robot.mouseMove(MAX_X,MAX_Y)将在rob.mouseMove(1000,200)之后执行。

只需删除循环。另请注意,您只需要一个Robot类的实例。

答案 2 :(得分:0)

拥有两个Robot对象是没用的。

此外,您不必在rob.mouseMove(1000, 200)robot.mouseMove(MAX_X, MAX_Y)之间等待。

然后正确的代码应该是:

import java.awt.Robot;
import java.util.Random;

public class MouseMovers {

    public static  int MILLISECONDS = 5000;
    public static  int MAX_Y = 500;
    public static  int MAX_X = 500;
    public static  int NEW_MAX_X = 1000;
    public static  int NEW_MAX_Y = 2000;

    public static void main(String [] args) throws Exception {
        Robot robot = new Robot();

        while (true) {
            robot.mouseMove(MAX_X, MAX_Y);
            Thread.sleep(MILLISECONDS);
            robot.mouseMove(NEW_MAX_X, NEW_MAX_Y);
            Thread.sleep(MILLISECONDS);
        }
    }
}