Подтвердить что ты не робот

Как установить положение мыши в Java?

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

4b9b3361

Ответ 1

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

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

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

Ответ 2

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

Ответ 5

Посмотрите Robot класс.

Ответ 6

Сам код выглядит следующим образом:

char escCode = 0x1B;
System.out.print(String.format("%c[%d;%df",escCode,row,column));

Этот код сам по себе неполон, поэтому я рекомендую поместить его в метод и вызвать что-то вроде 'positionCursor (int row, int column)'.

Вот полный код (метод и код):

void positionCursor(int row, int column) {
        char escCode = 0x1B;
        System.out.print(String.format("%c[%d;%df",escCode,row,column));
}