【问题标题】:Java: Robot Mouse Move Unknown ErrorJava:机器人鼠标移动未知错误
【发布时间】:2015-12-11 22:06:43
【问题描述】:

总结:我正在创建一个程序,将用户的鼠标移动到预定的屏幕坐标。该程序通过坐标移动鼠标来模拟人体运动。问题是程序仅将鼠标移动到其中一个坐标(无论它首先到达哪个坐标)并在停止后立即移动。我需要它来将鼠标移动到正确的坐标。

import java.awt.AWTException;
import java.awt.MouseInfo;
import java.awt.Point;
import java.awt.PointerInfo;
import java.awt.Robot;
import java.util.Random;

public class MouseMover implements Runnable {

    Robot robot;
    Random random = new Random();

    int dX, // destination x-coord
            dY, // destination y-coord
            cX,
            cY;

    PointerInfo pointerInfo;
    Point point;

    public MouseMover(int mX, int mY) throws AWTException {
        robot = new Robot();

        dX = mX;
        dY = mY;
    }

    @Override
    public void run() {
        pointerInfo = MouseInfo.getPointerInfo();
        point = pointerInfo.getLocation();

        cX = (int) point.getX(); // get current mouse pointer's x-coord
        cY = (int) point.getY(); // get current mouse pointer's y-coord

        System.out.println("Current: (" + cX + ", " + cY + ")");

        System.out.println("Destination: (" + dX + ", " + dY + ")");

        while (cX != dX && cY != dY) { // move loop: move mouse pointer until at predetermined point
            if (cX < dX) {
                cX++;
            } else if (cX > dX) {
                cX--;
            } else {
            }

            if (cY < dY) {
                cY++;
            } else if (cY > dY) {
                cY--;
            } else {
            }

            robot.mouseMove(cX, cY); // move mouse pointer to next coordinate

            System.out.println("Current: (" + cX + ", " + cY + ")");

            try {
                Thread.sleep((int) (Math.random() * ((15 - 1) + 1)) + 1);
            } catch (InterruptedException ex) {
            }
        }
    }
}

主类:

import java.awt.AWTException;

public class Main {
    public static void main(String[] args) {
        try {
            new Thread(new MouseMover(200, 200)).start();
        } catch (AWTException ex) {
            ex.printStackTrace();
        }
    }
}

【问题讨论】:

    标签: java mouse awtrobot


    【解决方案1】:

    问题在于程序仅将鼠标移动到其中一个坐标(无论它首先到达哪个坐标),并且在停止后立即移动。我需要它来将鼠标移动到正确的坐标。

    那你为什么在any坐标到达目的地时停止它:cX != dX &amp;&amp; cY != dY?您应该使用|| 而不是&amp;&amp;

    【讨论】:

    • 我现在看到了我的错误。有时它只需要一点外部帮助。非常感谢。
    猜你喜欢
    • 2011-07-17
    • 2016-04-14
    • 2012-08-08
    • 2014-10-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-06
    • 1970-01-01
    相关资源
    最近更新 更多