Java使用带有多个监视器的mouseMove

时间:2014-03-03 18:27:54

标签: java awtrobot

我正在尝试将光标移动到具有多个显示器的计算机上。但是,当我只使用机器人的mouseMove函数时,它将无法正常工作。经过一些研究,我发现this stackoverflow post,它几​​乎可以工作。但现在看来,GraphicsConfiguration和Robot都看到了不同的主监视器。这意味着对于另一个,0,0是1920,0。所以当我尝试使用它时,我的鼠标总是转移到另一个屏幕。有没有任何通用的方法来解决这个问题,从而相对于它的当前位置移动光标?

我希望有人可以帮助我。

我的代码:

public static void moveCursor(int dx, int dy) {
    try {
        PointerInfo pi = MouseInfo.getPointerInfo();
        Point mp = pi.getLocation();
        GraphicsConfiguration gc = pi.getDevice().getDefaultConfiguration();
        Rectangle bounds = gc.getBounds();
        Point virtualPoint = new Point(mp);
        virtualPoint.x -= bounds.x;
        virtualPoint.y -= bounds.y;
        Robot r = new Robot();
        r.mouseMove(virtualPoint.x + dx, virtualPoint.y + dy);
    } catch (AWTException ex) { }
}

1 个答案:

答案 0 :(得分:1)

尝试

Robot r = new Robot(MouseInfo.getPointerInfo().getDevice());

根据文档,它应该使机器人使用与MouseInfo.getPointerInfo()使用相同的GraphicsDevice。