Это одна из самых странных проблем, с которыми я столкнулся при программировании. Когда я использую класс робота для перемещения курсора, он не будет перемещать его в нужное место с первой попытки. Кажется, он «запирается» и каждый раз приближается к указанному месту. Я прикрепил ссылку ниже к видео на 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);
}
}
}