Я работаю с Swing GUI с Java, и я думаю, что мой вопрос довольно прост; Как установить положение мыши?
Как установить положение мыши в Java?
Ответ 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;
}
Ответ 3
Ответ 4
Следуйте по этой ссылке: http://www.javaprogrammingforums.com/java-code-snippets-tutorials/214-how-control-your-computers-mouse-using-robot-class.html
Ответ 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));
}