Как мне установить положение мыши в Java? - PullRequest
18 голосов
/ 31 мая 2010

Я занимаюсь Swing GUI с Java и думаю, что мой вопрос довольно прост; Как установить положение мыши?

Ответы [ 5 ]

21 голосов
/ 19 мая 2012

Как уже говорили другие, это может быть достигнуто с помощью 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;
}
20 голосов
/ 31 мая 2010

Вам нужно использовать Робот

Этот класс используется для генерации собственных событий системного ввода для целей автоматизации тестирования, демонстраций, запускаемых самостоятельно, и других приложений, где необходимо управление мышью и клавиатурой. Основная цель Robot - облегчить автоматизированное тестирование реализаций платформы Java.

Использование класса для генерации входных событий отличается от публикации событий в очереди событий AWT или компонентах AWT тем, что события генерируются в собственной входной очереди платформы. Например, Robot.mouseMove будет фактически перемещать курсор мыши вместо того, чтобы просто генерировать события перемещения мыши ...

7 голосов
/ 31 мая 2010
4 голосов
/ 31 мая 2010
2 голосов
/ 31 мая 2010

Проверьте Робот класс.

...