如何在Java中设置鼠标的位置?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (10)

我正在做一些Swing GUI与Jav​​a的工作,我认为我的问题相当简单; 如何设置鼠标的位置?

提问于
用户回答回答于

你需要使用Robot

该类用于生成本机系统输入事件,以用于测试自动化,自运行演示和需要控制鼠标和键盘的其他应用程序。Robot的主要目的是促进Java平台实现的自动化测试。 使用该类生成输入事件不同于将事件发布到AWT事件队列或AWT组件,因为事件是在平台的本机输入队列中生成的。例如,Robot.mouseMove实际上将移动鼠标光标而不是生成鼠标移动事件...

用户回答回答于

正如其他人所说,这可以通过使用来实现Robot.mouseMove(x,y)。然而,这种解决方案在多显示器情况下工作时会出现问题,因为机器人使用主屏幕的坐标系统工作,除非您另行指定。

这里有一个解决方案,可以让你通过任何基于点的全局屏幕坐标:

public void moveMouse(Point p) {
    GraphicsEnvironment ge = 
        GraphicsEnvironment.getLocalGraphicsEnvironment();
    GraphicsDevice[] gs = ge.getScreenDevices();

    // Search the devices for the one that draws the specified point.
    for (GraphicsDevice device: gs) { 
        GraphicsConfiguration[] configurations =
            device.getConfigurations();
        for (GraphicsConfiguration config: configurations) {
            Rectangle bounds = config.getBounds();
            if(bounds.contains(p)) {
                // Set point to screen coordinates.
                Point b = bounds.getLocation(); 
                Point s = new Point(p.x - b.x, p.y - b.y);

                try {
                    Robot r = new Robot(device);
                    r.mouseMove(s.x, s.y);
                } catch (AWTException e) {
                    e.printStackTrace();
                }

                return;
            }
        }
    }
    // Couldn't move to the point, it may be off screen.
    return;
}

扫码关注云+社区