Robot.mouseMove没有正确移动到指定的位置

Dar*_*rse 8 java windows mousemove awtrobot

每当我mouseMove为机器人运行命令时,鼠标并不总是到达同一位置.例如,我有以下代码:

import java.awt.Robot;
import java.util.concurrent.TimeUnit;

public class MainBot {
    public static void main(String[] args){
        try {
            Robot screenWin = new Robot();
            TimeUnit.SECONDS.sleep(2);
            screenWin.mouseMove(100, 300);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

代码通常使鼠标在X处结束:

运行后鼠标位置 首先,我点击运行(我正在使用eclipse)并将鼠标移动到某个位置(在2秒计时器启动之前).然后2秒延迟结束,鼠标移动,然后脚本结束.问题是,鼠标似乎永远不会两次到同一个地方.例如,鼠标应该去,(100, 300)但它会变成(0, 300)大多数时候看起来像的东西.但是,其他时候,如果我将鼠标从头开始移动到它应该大致的位置,那么它就会到达正确的位置.

我得到鼠标应该使用Paint来获取屏幕截图的像素位置,但我不认为这是因为位置不断变化.

有什么我想念的mouseMove工作坐标怎么样?

编辑:基本上,我点击该程序开始,然后我将鼠标移动到一个新位置(所以在mouseMove函数之前有一个不同的初始位置),然后mouseMove执行.每次执行此操作时,鼠标都会转到其他位置.

Syl*_*Syl 7

OpenJDK 上有一个开放的错误,所以这可能是相关的:

https://bugs.openjdk.java.net/browse/JDK-8196030?jql=project%20in%20(JDK)%20AND%20component%20in%20(client-libs)%20AND%20Subcomponent%20in%20( java.awt)

Windows 10 Fall Creators 更新中可能引入的问题的错误详细信息,与屏幕缩放和 mouse_move 功能相关。

同时,您可以尝试将屏幕比例设置为 100% 而不是 125%,看看是否有帮助。