【问题标题】:Problems with Thread.sleep() and mouseMove()Thread.sleep() 和 mouseMove() 的问题
【发布时间】:2014-01-29 16:44:00
【问题描述】:

我想在 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);
        }
    }
}

【问题讨论】:

  • 5 秒还是 5000 秒?
  • @pamphlet 5, Thread.sleep 以毫秒为单位
  • 那么robrobot有什么区别?
  • @BackSlash,这使得 SECONDS 成为变量的一个非常糟糕的名称。
  • 您是否考虑过,当您移至1000,200 时,循环将进行迭代,您将立即移回500,500

标签: java bluej


【解决方案1】:

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

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

顺便说一句:你只需要一个机器人。

【讨论】:

  • 你能告诉我如何只使用 1 个机器人来完成这项工作吗?
  • @user3244786 你只需要一个机器人,因为你的两个机器人几乎一样,你只用它们来设置鼠标指针。如果您有两个不同的列表,因为您可以将元素添加到一个列表中,但不能添加到另一个列表中,反之亦然,从而使它们彼此不同。
【解决方案2】:
while (true) {
    robot.mouseMove(MAX_X, MAX_Y);
    Thread.sleep(SECONDS);
    rob.mouseMove(1000,200);
}

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

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

【讨论】:

    【解决方案3】:

    拥有两个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);
            }
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多