robot.mouseMove не перемещается в правильное место с Video Evidence - PullRequest
0 голосов
/ 02 июля 2018

Это одна из самых странных проблем, с которыми я столкнулся при программировании. Когда я использую класс робота для перемещения курсора, он не будет перемещать его в нужное место с первой попытки. Кажется, он «запирается» и каждый раз приближается к указанному месту. Я прикрепил ссылку ниже к видео на YouTube, которое я загрузил, показывая это. Программа указана ниже и очень проста. Он перемещает курсор в одно и то же место 25 раз и распечатывает местоположение курсора после каждой попытки, используя MouseInfo.getPointerLocation. Когда я нажимал кнопку запуска, он пытался переместить указатель мыши к указанному значению, закрываясь и сближаясь каждый раз, обычно это занимает около трех раз. Я попытался обновить версию Eclipse, которую я использую, и Java. Мое исследование показало, что люди сталкиваются с этой проблемой и ссылаются на ошибку из OpenJDK. Я не уверен, вызывает ли это проблему, или она была исправлена, или как ее обновить. Благодарю. Вот ссылка на видео:

https://youtu.be/VfYTPcbW6iY Важное примечание для видео: поскольку я записал его с помощью bandicam, оно скрывает мышь, поэтому программа каждый раз щелкает мышью на новой позиции. Красный круг указывает, где он щелкает. Программа указана ниже. Эта ошибка возникает каждый раз, и с тех пор как я обновил Java на своем компьютере около года назад, я столкнулся с этим. Я показываю его дважды в видео сначала с координатами (1037 456), а затем меняю его на (500 500) во второй раз.

import java.awt.AWTException;
import java.awt.MouseInfo;
import java.awt.Robot; 
import java.awt.event.InputEvent;

public class tester {
    static Robot g;
    public static void main(String args[]) throws AWTException{
        g = new Robot();
        for(int i = 0; i < 25; i++) {
            g.mouseMove(500,500);
            g.mousePress(InputEvent.BUTTON1_MASK);
            g.mouseRelease(InputEvent.BUTTON1_MASK);
            System.out.println("x: " + MouseInfo.getPointerInfo().getLocation().x + " y: " + MouseInfo.getPointerInfo().getLocation().y);
            g.delay(500);
        }
    }
}
...