Класс Robot
public class Robot extends Object
Использование класса для генерации событий ввода отличается от отправки событий в очередь событий AWT или компонентов AWT тем, что события генерируются в родной очереди ввода платформы. Например, Robot.mouseMove фактически переместит курсор мыши, а не просто сгенерирует события перемещения мыши.
Обратите внимание, что некоторые платформы требуют специальных привилегий или расширений для доступа к управлению низкоуровневым вводом. Если текущая конфигурация платформы не допускает управления вводом, при попытке создания объектов Robot будет выброшено исключение AWTException. Например, системы X-Window выбросят исключение, если стандарт расширения XTEST 2.2 не поддерживается (или не включён) сервером X.
Приложения, использующие 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
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()следующим образом:- Если поддержка расширенных кнопок мыши
disabledJava, то разрешается использовать только следующие стандартные маски кнопок:InputEvent.BUTTON1_DOWN_MASK,InputEvent.BUTTON2_DOWN_MASK,InputEvent.BUTTON3_DOWN_MASK. - Если поддержка расширенных кнопок мыши
enabledJava, то разрешается использовать стандартные маски кнопок и маски существующих расширенных кнопок мыши, если мышь имеет более трёх кнопок. Таким образом, разрешается использовать маски кнопок, соответствующие кнопкам в диапазоне от 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содержит маску для дополнительной кнопки мыши, и поддержка расширенных кнопок мышиdisabledJava -
IllegalArgumentException- если маскаbuttonsсодержит маску для дополнительной кнопки мыши, которая не существует на мыши, и поддержка расширенных кнопок мышиenabledJava - См. также:
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()следующим образом:- Если поддержка расширенных кнопок мыши
disabledJava, то разрешается использовать только следующие стандартные маски кнопок:InputEvent.BUTTON1_DOWN_MASK,InputEvent.BUTTON2_DOWN_MASK,InputEvent.BUTTON3_DOWN_MASK. - Если поддержка расширенных кнопок мыши
enabledJava, то разрешается использовать стандартные маски кнопок и маски существующих расширенных кнопок мыши, если мышь имеет более трёх кнопок. Таким образом, разрешается использовать маски кнопок, соответствующие кнопкам в диапазоне от 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содержит маску для дополнительной кнопки мыши, и поддержка расширенных кнопок мышиdisabledJava -
IllegalArgumentException- если маскаbuttonsсодержит маску для дополнительной кнопки мыши, которая не существует на мыши, и поддержка расширенных кнопок мышиenabledJava - См. также:
mouseWheel
public void mouseWheel(int wheelAmt)
- Параметры:
-
wheelAmt- число "ступенек" перемещения колеса мыши. Отрицательные значения указывают на движение вверх/от пользователя, положительные значения указывают на движение вниз/к пользователю. - С тех пор как:
- 1.4
keyPress
public void keyPress(int keycode)
keyRelease. Коды клавиш, которым соответствует более одной физической клавиши (например, KeyEvent.VK_SHIFT может означать либо левую, либо правую клавишу Shift), будут отображаться как левая клавиша.
- Параметры:
-
keycode- Нажимаемая клавиша (например,KeyEvent.VK_A) - Вызывает исключение:
-
IllegalArgumentException- еслиkeycodeне является допустимой клавишей - См. также:
keyRelease
public void keyRelease(int keycode)
Коды клавиш, которым соответствует более одной физической клавиши (например, KeyEvent.VK_SHIFT может означать либо левую, либо правую клавишу Shift), будут отображаться как левая клавиша.
- Параметры:
-
keycode- Отпускаемая клавиша (например,KeyEvent.VK_A) - Вызывает исключение:
-
IllegalArgumentException- еслиkeycodeне является допустимой клавишей - См. также:
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);
}
- Параметры:
-
screenRect- Область для захвата в координатах экрана - Возвращает:
- Захваченное изображение
- Выбрасывает:
-
IllegalArgumentException- если ширина и высотаscreenRectне больше нуля -
SecurityException- если доступ к экрану запрещён средой рабочего стола - С:
- 9
isAutoWaitForIdle
public boolean isAutoWaitForIdle()
waitForIdle после генерации события.- Возвращает:
- Вызывается ли
waitForIdleавтоматически
setAutoWaitForIdle
public void setAutoWaitForIdle(boolean isOn)
waitForIdle после генерации события.- Параметры:
-
isOn- Вызывается лиwaitForIdleавтоматически
getAutoDelay
public int getAutoDelay()
- Возвращает:
- Длительность задержки в миллисекундах
setAutoDelay
public void setAutoDelay(int ms)
- Параметры:
-
ms- Длительность задержки в миллисекундах - Выбрасывает:
-
IllegalArgumentException- Еслиmsне находится в диапазоне от 0 до 60 000 миллисекунд включительно
delay
public void delay(int ms)
Если поток вызова прерывается во время ожидания, он возвращается немедленно со статусом прерывания. Если статус прерывания уже установлен, этот метод возвращается немедленно со статусом прерывания.
- Параметры:
-
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://download.java.net/java/early_access/jdk24/docs/api/java.desktop/java/awt/Robot.html