我试图在具有多台显示器的计算机上移动光标。但是,当我仅使用机器人的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) { }
}
最佳答案
尝试
Robot r = new Robot(MouseInfo.getPointerInfo().getDevice());
根据文档,它应使机器人使用与MouseInfo.getPointerInfo()相同的GraphicsDevice。