Класс 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
Краткое описание полей
| Модификатор и тип | Поле | Описание |
|---|---|---|
static final int |
DEFAULT_DELAY |
|
static final int |
DEFAULT_STEP_LENGTH |
Длина шага по умолчанию в пикселях для glide мышью. |
Краткое описание конструкторов
| Конструктор | Описание |
|---|---|
Robot() |
Создает объект Robot в системе координат основного экрана. |
Robot |
Создает объект Robot для указанного устройства отображения. |
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
void |
click() |
Вспомогательный метод, который нажимает кнопку мыши 1. |
void |
click |
Вспомогательный метод, имитирующий нажатие кнопки мыши путем вызова mousePress, mouseRelease и waitForIdle. |
MultiResolutionImage |
createMultiResolutionScreenCapture |
Создает изображение, содержащее пиксели, считанные с экрана. |
BufferedImage |
createScreenCapture |
Создает изображение, содержащее пиксели, считанные с экрана. |
void |
delay |
Приостанавливает выполнение на указанное время. |
int |
getAutoDelay() |
Возвращает количество миллисекунд, в течение которых этот Robot приостанавливает выполнение после генерации события. |
Color |
getPixelColor |
Возвращает цвет пикселя в заданных координатах экрана. |
void |
glide |
Вспомогательный метод, который перемещает мышь несколькими шагами из текущего положения к заданным координатам назначения. |
void |
glide |
Вспомогательный метод, который перемещает мышь несколькими шагами из исходных координат к координатам назначения. |
void |
glide |
Вспомогательный метод, который перемещает мышь несколькими шагами из исходной точки в точку назначения с заданными stepLength и stepDelay. |
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 |
type |
Вспомогательный метод, имитирующий ввод символа путем вызова keyPress и keyRelease. |
void |
type |
Вспомогательный метод, имитирующий нажатие клавиши путем вызова keyPress и keyRelease. |
void |
waitForIdle() |
Ожидает обработки всех событий, находящихся в данный момент в очереди событий. |
void |
waitForIdle |
Вспомогательный метод, который вызывает waitForIdle, а затем ожидает дополнительно указанное время в delayValue миллисекундах. |
Методы, объявленные в классе Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait | Модификатор и тип | Метод | Описание |
|---|---|---|
protected Object |
clone() |
Создает и возвращает копию этого объекта. |
boolean |
equals |
Указывает, равен ли этот объект какому-либо другому объекту. |
protected void |
finalize() |
Устарело, планируется удаление: этот элемент API может быть удален в будущей версии. Финализация признана устаревшей и может быть удалена в одном из следующих выпусков. |
final Class |
getClass() |
Возвращает класс времени выполнения этого Object. |
int |
hashCode() |
Возвращает хеш-код этого объекта. |
final void |
notify() |
Пробуждает один поток, ожидающий на мониторе этого объекта. |
final void |
notifyAll() |
Пробуждает все потоки, ожидающие на мониторе этого объекта. |
final void |
wait() |
Заставляет текущий поток ожидать пробуждения, обычно в результате вызова notify или interrupt. |
final void |
wait |
Заставляет текущий поток ожидать пробуждения, обычно в результате вызова notify или interrupt, либо истечения заданного промежутка реального времени. |
final void |
wait |
Заставляет текущий поток ожидать пробуждения, обычно в результате вызова notify или interrupt, либо истечения заданного промежутка реального времени. |
Подробное описание полей
DEFAULT_DELAY
DEFAULT_STEP_LENGTH
public static final int DEFAULT_STEP_LENGTH
glide мыши.- См. также:
Подробное описание конструкторов
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
click
public void click(int buttons)
mousePress, mouseRelease и waitForIdle. Вызывает waitForIdle с задержкой по умолчанию 20 миллисекунд после вызовов mousePress и mouseRelease. Подробные сведения о допустимых входных данных см. в описании mousePress(int).- Параметры:
-
buttons— маска кнопок; комбинация одной или нескольких масок кнопок мыши. - Выбрасывает:
-
IllegalArgumentException— если маскаbuttonsсодержит маску дополнительной кнопки мыши, а поддержка дополнительных кнопок мыши отключена в Java -
IllegalArgumentException— если маскаbuttonsсодержит маску дополнительной кнопки мыши, которой нет у мыши, а поддержка дополнительных кнопок мыши включена в Java -
IllegalThreadStateException— если вызван в потоке диспетчеризации событий AWT - Начиная с:
- 26
- См. также:
click
public void click()
- Выбрасывает:
-
IllegalThreadStateException— если вызван в потоке диспетчеризации событий AWT - Начиная с:
- 26
- См. также:
waitForIdle
public void waitForIdle(int delayValue)
waitForIdle, а затем ожидающий дополнительное указанное время delayValue в миллисекундах.- Параметры:
-
delayValue— дополнительная длительность ожидания в миллисекундах до завершения синхронизации потоков - Выбрасывает:
-
IllegalThreadStateException— если вызван в потоке диспетчеризации событий AWT -
IllegalArgumentException— еслиdelayValueне находится в диапазоне от0до60,000миллисекунд включительно - Начиная с:
- 26
glide
public void glide(int x, int y)
- Требования к реализации:
- Вызывает
mouseMoveс длиной шага 2 и задержкой между шагами 20. - Параметры:
-
x— координата X конечной точки -
y— координата Y конечной точки - Выбрасывает:
-
IllegalThreadStateException— если вызван в потоке диспетчеризации событий AWT иisAutoWaitForIdleвернул бы true - Начиная с:
- 26
- См. также:
glide
public void glide(int srcX, int srcY, int dstX, int dstY)
- Требования к реализации:
- Вызывает
mouseMoveс длиной шага 2 и задержкой между шагами 20. - Параметры:
-
srcX— координата X исходной точки -
srcY— координата Y исходной точки -
dstX— координата X конечной точки -
dstY— координата Y конечной точки - Выбрасывает:
-
IllegalThreadStateException— если вызван в потоке диспетчеризации событий AWT иisAutoWaitForIdleвернул бы true - Начиная с:
- 26
- См. также:
glide
public void glide(int srcX, int srcY, int destX, int destY, int stepLength, int stepDelay)
stepLength и stepDelay.- Параметры:
-
srcX— координата X исходной точки -
srcY— координата Y исходной точки -
destX— координата X конечной точки -
destY— координата Y конечной точки -
stepLength— предпочтительная длина одного шага в пикселях -
stepDelay— задержка между шагами в миллисекундах - Выбрасывает:
-
IllegalArgumentException— еслиstepLengthне больше нуля -
IllegalArgumentException— еслиstepDelayне находится в диапазоне от0до60,000миллисекунд включительно -
IllegalThreadStateException— если вызван в потоке диспетчеризации событий AWT иisAutoWaitForIdleвернул бы true - Начиная с:
- 26
- См. также:
type
public void type(int keycode)
keyPress и keyRelease. Вызывает waitForIdle с задержкой 20 миллисекунд после вызовов keyPress и keyRelease. Коды клавиш, которым соответствуют несколько физических клавиш (например, KeyEvent.VK_SHIFT может обозначать левую или правую клавишу Shift), будут сопоставлены с левой клавишей.
- Параметры:
-
keycode— клавиша для ввода (например,KeyEvent.VK_A) - Выбрасывает:
-
IllegalArgumentException— еслиkeycodeне является допустимой клавишей -
IllegalThreadStateException— если вызван в потоке диспетчеризации событий AWT - Начиная с:
- 26
- См. также:
type
public void type(char c)
keyPress и keyRelease. Получает ExtendedKeyCode для символа и вызывает type(int keycode).- Параметры:
-
c— вводимый символ (например,'a') - Выбрасывает:
-
IllegalArgumentException— еслиkeycodeне является допустимой клавишей -
IllegalThreadStateException— если вызван в потоке диспетчеризации событий AWT - Начиная с:
- 26
- См. также:
© 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.