Java使用带有多个监视器的mouseMove
作者:互联网
我试图将光标移动到具有多个监视器的计算机上.但是,当我只使用机器人的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.
标签:java,awtrobot 来源: https://codeday.me/bug/20190708/1405872.html