Класс Robot
public class Robot extends Object
Генерация событий ввода с помощью этого класса отличается от отправки событий в очередь событий AWT или компонентам AWT тем, что события генерируются в собственной очереди ввода платформы. Например, Robot.mouseMove действительно переместит указатель мыши, а не просто сгенерирует события перемещения мыши.
- Примечание API:
- Когда включен
autoWaitForIdle(), методы, связанные с мышью и клавиатурой, нельзя вызывать в AWT EDT. Это связано с тем, что при включенномautoWaitForIdle()методы работы с мышью и клавиатурой неявно вызываютwaitForIdle(), который выбрасываетIllegalThreadStateExceptionпри вызове в AWT EDT. Кроме того, операции захвата экрана могут занимать много времени, аdelay(long ms)явно вносит задержку, поэтому их также не следует вызывать в EDT. В совокупности это означает, что методы этого класса по возможности не следует вызывать в EDT.Обратите внимание: некоторым платформам для доступа к низкоуровневому управлению вводом требуются особые привилегии или расширения. Если текущая конфигурация платформы не допускает управление вводом, при попытке создать объекты Robot будет выброшено
AWTException. Например, в системах X Window это исключение выбрасывается, если сервер X не поддерживает (или не включил) стандартное расширение XTEST 2.2.Приложения, использующие Robot не для самотестирования, должны корректно обрабатывать эти условия ошибки.
Платформы и среды рабочего стола могут вводить ограничения или запреты на доступ, необходимый для реализации всех возможностей класса Robot. Например:
- запрет доступа к содержимому любой части рабочего стола или любого окна на рабочем столе, не принадлежащего выполняющемуся приложению;
- обработка украшений окна как содержимого, не принадлежащего приложению;
- игнорирование или ограничение определенных запросов на управление окнами;
- игнорирование или ограничение определенных запросов на события клавиатуры, мыши и другие события, сгенерированные (синтезированные) Robot;
- требование отдельных или глобальных разрешений для любого доступа к содержимому окон, включая содержимое окон приложения, или даже для ограниченной генерации событий.
- требоваться при каждом обращении;
- сохраняться на время работы приложения;
- сохраняться между несколькими сеансами рабочего стола пользователя;
- быть разрешениями с детальной настройкой;
- быть связаны с конкретным двоичным файлом приложения или классом двоичных приложений.
- С момента:
- 1.3
Краткое описание конструкторов
| Конструктор | Описание |
|---|---|
Robot() |
Создает объект Robot в системе координат основного экрана. |
Robot |
Создает объект Robot для указанного устройства отображения. |
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
MultiResolutionImage |
createMultiResolutionScreenCapture |
Создает изображение, содержащее пиксели, считанные с экрана. |
BufferedImage |
createScreenCapture |
Создает изображение, содержащее пиксели, считанные с экрана. |
void |
delay |
Приостанавливает выполнение на заданное время. |
int |
getAutoDelay() |
Возвращает время в миллисекундах, в течение которого этот Robot приостанавливает выполнение после генерации события. |
Color |
getPixelColor |
Возвращает цвет пикселя в заданных экранных координатах. |
boolean |
isAutoWaitForIdle() |
Возвращает информацию о том, вызывает ли этот Robot автоматически waitForIdle после генерации события. |
void |
keyPress |
Нажимает указанную клавишу. |
void |
keyRelease |
Отпускает указанную клавишу. |
void |
mouseMove |
Перемещает указатель мыши в заданные экранные координаты. |
void |
mousePress |
Нажимает одну или несколько кнопок мыши. |
void |
mouseRelease |
Отпускает одну или несколько кнопок мыши. |
void |
mouseWheel |
Поворачивает колесо прокрутки мыши. |
void |
setAutoDelay |
Задает время в миллисекундах, в течение которого этот Robot приостанавливает выполнение после генерации события. |
void |
setAutoWaitForIdle |
Задает, будет ли этот Robot автоматически вызывать waitForIdle после генерации события. |
String |
toString() |
Возвращает строковое представление этого Robot. |
void |
waitForIdle() |
Ожидает обработки всех событий, находящихся в данный момент в очереди событий. |
Подробное описание конструкторов
Robot
public Robot() throws AWTException
- Выбрасывает:
-
AWTException— если конфигурация платформы не допускает низкоуровневое управление вводом. Это исключение всегда выбрасывается, если GraphicsEnvironment.isHeadless() возвращает true - См. также:
Robot
public Robot(GraphicsDevice screen) throws AWTException
- использовать общую систему координат, образуя единый виртуальный экран;
- использовать разные системы координат, выступая в качестве независимых экранов.
Если конфигурация экранных устройств изменяется таким образом, что затрагивается система координат, поведение существующих объектов Robot не определено.
- Параметры:
-
screen— экранное устройство GraphicsDevice, задающее систему координат, в которой будет работать Robot. - Выбрасывает:
-
AWTException— если конфигурация платформы не допускает низкоуровневое управление вводом. Это исключение всегда выбрасывается, если GraphicsEnvironment.isHeadless() возвращает true. -
IllegalArgumentException— еслиscreenне является экранным устройством GraphicsDevice. - См. также:
Подробное описание методов
mouseMove
public void mouseMove(int x, int y)
На некоторых платформах указатель мыши может визуально не перемещаться, хотя последующие вызовы mousePress и mouseRelease могут быть доставлены в правильное место.
- Параметры:
-
x— координата X -
y— координата Y - Выбрасывает:
-
IllegalThreadStateException— если метод вызван в потоке диспетчеризации событий AWT иisAutoWaitForIdleвозвращает true
mousePress
public void mousePress(int buttons)
mouseRelease(int).- Параметры:
-
buttons— маска кнопок; комбинация одной или нескольких масок кнопок мыши.В качестве параметра
buttonsразрешено использовать только комбинацию допустимых значений. Допустимая комбинация состоит изInputEvent.BUTTON1_DOWN_MASK,InputEvent.BUTTON2_DOWN_MASK,InputEvent.BUTTON3_DOWN_MASKи значений, возвращаемых методомInputEvent.getMaskForButton(button). Допустимая комбинация также зависит от значенияToolkit.areExtraMouseButtonsEnabled()следующим образом:- Если поддержка расширенных кнопок мыши
disabledв Java, разрешено использовать только следующие стандартные маски кнопок:InputEvent.BUTTON1_DOWN_MASK,InputEvent.BUTTON2_DOWN_MASK,InputEvent.BUTTON3_DOWN_MASK. - Если поддержка расширенных кнопок мыши
enabledв Java, разрешено использовать стандартные маски кнопок и маски существующих расширенных кнопок мыши, если у мыши больше трех кнопок. Таким образом, разрешено использовать маски кнопок, соответствующие кнопкам с номерами от 1 доMouseInfo.getNumberOfButtons().
Для получения маски любой кнопки мыши по ее номеру рекомендуется использовать методInputEvent.getMaskForButton(button).
Также принимаются следующие стандартные маски кнопок:
-
InputEvent.BUTTON1_MASK -
InputEvent.BUTTON2_MASK -
InputEvent.BUTTON3_MASK
InputEvent.BUTTON1_DOWN_MASK,InputEvent.BUTTON2_DOWN_MASK,InputEvent.BUTTON3_DOWN_MASK. Следует использовать либо расширенные значения_DOWN_MASK, либо старые значения_MASK, но не смешивать эти две модели. - Если поддержка расширенных кнопок мыши
- Выбрасывает:
-
IllegalArgumentException— если маскаbuttonsсодержит маску дополнительной кнопки мыши, а поддержка расширенных кнопок мышиdisabledв Java -
IllegalArgumentException— если маскаbuttonsсодержит маску дополнительной кнопки мыши, которой нет у мыши, а поддержка расширенных кнопок мышиenabledв Java -
IllegalThreadStateException— если метод вызван в потоке диспетчеризации событий AWT иisAutoWaitForIdleвозвращает true - См. также:
mouseRelease
public void mouseRelease(int buttons)
- Параметры:
-
buttons— маска кнопок; комбинация одной или нескольких масок кнопок мыши.В качестве параметра
buttonsразрешено использовать только комбинацию допустимых значений. Допустимая комбинация состоит изInputEvent.BUTTON1_DOWN_MASK,InputEvent.BUTTON2_DOWN_MASK,InputEvent.BUTTON3_DOWN_MASKи значений, возвращаемых методомInputEvent.getMaskForButton(button). Допустимая комбинация также зависит от значенияToolkit.areExtraMouseButtonsEnabled()следующим образом:- Если поддержка расширенных кнопок мыши
disabledв Java, разрешено использовать только следующие стандартные маски кнопок:InputEvent.BUTTON1_DOWN_MASK,InputEvent.BUTTON2_DOWN_MASK,InputEvent.BUTTON3_DOWN_MASK. - Если поддержка расширенных кнопок мыши
enabledв Java, разрешено использовать стандартные маски кнопок и маски существующих расширенных кнопок мыши, если у мыши больше трех кнопок. Таким образом, разрешено использовать маски кнопок, соответствующие кнопкам с номерами от 1 доMouseInfo.getNumberOfButtons().
Для получения маски любой кнопки мыши по ее номеру рекомендуется использовать методInputEvent.getMaskForButton(button).
Также принимаются следующие стандартные маски кнопок:
-
InputEvent.BUTTON1_MASK -
InputEvent.BUTTON2_MASK -
InputEvent.BUTTON3_MASK
InputEvent.BUTTON1_DOWN_MASK,InputEvent.BUTTON2_DOWN_MASK,InputEvent.BUTTON3_DOWN_MASK. Следует использовать либо расширенные значения_DOWN_MASK, либо старые значения_MASK, но не смешивать эти две модели. - Если поддержка расширенных кнопок мыши
- Выбрасывает:
-
IllegalArgumentException— если маскаbuttonsсодержит маску дополнительной кнопки мыши, а поддержка расширенных кнопок мышиdisabledв Java -
IllegalArgumentException— если маскаbuttonsсодержит маску дополнительной кнопки мыши, которой нет у мыши, а поддержка расширенных кнопок мышиenabledв Java -
IllegalThreadStateException— если метод вызван в потоке диспетчеризации событий AWT иisAutoWaitForIdleвозвращает true - См. также:
mouseWheel
public void mouseWheel(int wheelAmt)
- Параметры:
-
wheelAmt— количество «щелчков» колеса мыши. Отрицательные значения обозначают движение вверх, от пользователя; положительные — вниз, к пользователю. - Выбрасывает:
-
IllegalThreadStateException— если метод вызван в потоке диспетчеризации событий AWT иisAutoWaitForIdleвозвращает true - С момента:
- 1.4
keyPress
public void keyPress(int keycode)
keyRelease. Коды клавиш, которым соответствуют несколько физических клавиш (например, KeyEvent.VK_SHIFT может обозначать как левую, так и правую клавишу Shift), будут сопоставлены с левой клавишей.
- Параметры:
-
keycode— клавиша для нажатия (например,KeyEvent.VK_A) - Выбрасывает:
-
IllegalArgumentException— еслиkeycodeне является допустимой клавишей -
IllegalThreadStateException— если метод вызван в потоке диспетчеризации событий AWT иisAutoWaitForIdleвозвращает true - См. также:
keyRelease
public void keyRelease(int keycode)
Коды клавиш, которым соответствуют несколько физических клавиш (например, KeyEvent.VK_SHIFT может обозначать как левую, так и правую клавишу Shift), будут сопоставлены с левой клавишей.
- Параметры:
-
keycode— клавиша для отпускания (например,KeyEvent.VK_A) - Выбрасывает:
-
IllegalArgumentException— еслиkeycodeне является допустимой клавишей -
IllegalThreadStateException— если метод вызван в потоке диспетчеризации событий AWT иisAutoWaitForIdleвозвращает true - См. также:
getPixelColor
public Color getPixelColor(int x, int y)
Если среда рабочего стола требует предоставления разрешений на захват содержимого экрана, а необходимые разрешения не предоставлены, может быть выброшено SecurityException либо содержимое возвращенного Color не определено.
- Примечание API:
- Рекомендуется не вызывать этот метод в потоке диспетчеризации событий AWT, поскольку захват экрана может занимать много времени, особенно если требуется получить разрешения, для чего необходимо взаимодействие с пользователем.
- Параметры:
-
x— координата X пикселя -
y— координата Y пикселя - Возвращает:
- Цвет пикселя
- Выбрасывает:
-
SecurityException— если среда рабочего стола запрещает доступ к экрану
createScreenCapture
public BufferedImage createScreenCapture(Rectangle screenRect)
Если среда рабочего стола требует предоставления разрешений на захват содержимого экрана, а необходимые разрешения не предоставлены, может быть выброшено SecurityException либо содержимое возвращенного BufferedImage не определено.
- Примечание API:
- Рекомендуется не вызывать этот метод в потоке диспетчеризации событий AWT, поскольку захват экрана может занимать много времени, особенно если требуется получить разрешения, для чего необходимо взаимодействие с пользователем.
- Параметры:
-
screenRect— прямоугольная область для захвата в экранных координатах - Возвращает:
- Захваченное изображение
- Выбрасывает:
-
IllegalArgumentException— если ширина и высотаscreenRectне больше нуля -
SecurityException— если среда рабочего стола запрещает доступ к экрану
createMultiResolutionScreenCapture
public MultiResolutionImage createMultiResolutionScreenCapture(Rectangle screenRect)
MultiResolutionImage. На дисплее без масштабирования MultiResolutionImage будет иметь один вариант изображения:
- Базовое изображение с размером, заданным пользователем.
На дисплее высокого разрешения с масштабированием MultiResolutionImage будет иметь два варианта изображения:
- Базовое изображение с размером, заданным пользователем. Оно масштабируется с экрана.
- Изображение с исходным разрешением устройства и количеством пикселей, соответствующим размеру устройства.
Пример:
Image nativeResImage;
MultiResolutionImage mrImage = robot.createMultiResolutionScreenCapture(frame.getBounds());
List<Image> resolutionVariants = mrImage.getResolutionVariants();
if (resolutionVariants.size() > 1) {
nativeResImage = resolutionVariants.get(1);
} else {
nativeResImage = resolutionVariants.get(0);
}
- Примечание API:
- Рекомендуется не вызывать этот метод в потоке диспетчеризации событий AWT, поскольку захват экрана может занимать много времени, особенно если требуется получить разрешения, для чего необходимо взаимодействие с пользователем.
- Параметры:
-
screenRect— прямоугольная область для захвата в экранных координатах - Возвращает:
- Захваченное изображение
- Выбрасывает:
-
IllegalArgumentException— если ширина и высотаscreenRectне больше нуля -
SecurityException— если среда рабочего стола запрещает доступ к экрану - С момента:
- 9
isAutoWaitForIdle
public boolean isAutoWaitForIdle()
waitForIdle после генерации события.- Возвращает:
- Информацию о том, вызывается ли автоматически
waitForIdle
setAutoWaitForIdle
public void setAutoWaitForIdle(boolean isOn)
waitForIdle после генерации события.- Примечание API:
- Если установить значение true, вы не сможете вызывать события управления мышью и клавиатурой в потоке диспетчеризации событий AWT.
- Параметры:
-
isOn— указывает, будет ли автоматически вызыватьсяwaitForIdle
getAutoDelay
public int getAutoDelay()
- Возвращает:
- длительность задержки в миллисекундах
setAutoDelay
public void setAutoDelay(int ms)
- Параметры:
-
ms— длительность задержки в миллисекундах - Выбрасывает:
-
IllegalArgumentException— еслиmsне находится в диапазоне от 0 до 60 000 миллисекунд включительно
delay
public void delay(int ms)
Если во время ожидания вызывающий поток будет прерван, метод немедленно вернет управление с установленным флагом прерывания. Если флаг прерывания уже установлен, метод немедленно вернет управление, сохранив этот флаг.
- Примечание API:
- Рекомендуется не вызывать этот метод в потоке диспетчеризации событий AWT, поскольку задержка может быть значительной.
- Параметры:
-
ms— время приостановки в миллисекундах - Выбрасывает:
-
IllegalArgumentException— еслиmsне находится в диапазоне от0до60,000миллисекунд включительно
waitForIdle
public void waitForIdle()
- Выбрасывает:
-
IllegalThreadStateException— если метод вызван в потоке диспетчеризации событий AWT
toString
© 1993, 2025, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.
https://docs.oracle.com/en/java/javase/25/docs/api/java.desktop/java/awt/Robot.html