Класс Robot
- java.lang.Object
-
- java.awt.Robot
public class Robot extends Object
Этот класс используется для генерации системных событий ввода для целей автоматизации тестирования, автономных демонстраций и других приложений, где требуется управление мышью и клавиатурой. Основное назначение Robot — облегчить автоматическое тестирование реализаций Java-платформы.
Использование класса для генерации событий ввода отличается от публикации событий в очередь событий AWT или компоненты AWT тем, что события генерируются в собственной очереди ввода платформы. Например, Robot.mouseMove фактически перемещает курсор мыши, а не просто генерирует события перемещения мыши.
Обратите внимание, что некоторые платформы требуют специальных привилегий или расширений для доступа к управлению низкоуровневым вводом. Если текущая конфигурация платформы не позволяет управлять вводом, при попытке создания объектов Robot будет выброшено исключение AWTException. Например, системы X-Window выбросят исключение, если стандарт расширения XTEST 2.2 не поддерживается (или не включен) сервером X.
Приложения, использующие Robot для целей, отличных от самотестирования, должны обрабатывать эти условия ошибки надлежащим образом.
- Since:
- 1.3
Конструкторы
| Конструктор и описание |
|---|
Robot() Создаёт объект Robot в системе координат основного экрана. |
Robot(GraphicsDevice screen) Создаёт объект Robot для указанного устройства экрана. |
Методы
| Модификатор и тип | Метод и описание |
|---|---|
BufferedImage |
createScreenCapture(Rectangle screenRect) Создаёт изображение, содержащее пиксели, считанные со экрана. |
void |
delay(int ms) Ожидает заданное время. |
int |
getAutoDelay() Возвращает количество миллисекунд, которое этот объект Robot ожидает после генерации события. |
Color |
getPixelColor(int x,
int y) Возвращает цвет пикселя в заданных координатах экрана. |
boolean |
isAutoWaitForIdle() Возвращает, вызывает ли этот объект Robot автоматически |
void |
keyPress(int keycode) Нажимает заданную клавишу. |
void |
keyRelease(int keycode) Отпускает заданную клавишу. |
void |
mouseMove(int x,
int y) Перемещает указатель мыши в заданные координаты экрана. |
void |
mousePress(int buttons) Нажимает одну или несколько кнопок мыши. |
void |
mouseRelease(int buttons) Отпускает одну или несколько кнопок мыши. |
void |
mouseWheel(int wheelAmt) Поворачивает колесико прокрутки на мышах с колесиком. |
void |
setAutoDelay(int ms) Устанавливает количество миллисекунд, которое этот объект Robot ожидает после генерации события. |
void |
setAutoWaitForIdle(boolean isOn) Устанавливает, вызывает ли этот объект Robot автоматически |
String |
toString() Возвращает строковое представление этого объекта Robot. |
void |
waitForIdle() Ожидает, пока все события, находящиеся в очереди событий, не будут обработаны. |
Методы, унаследованные от класса java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait Конструкторы
Robot
public Robot()
throws AWTException Создаёт объект Robot в системе координат основного экрана.
- Исключение:
-
AWTException- если конфигурация платформы не допускает управления низким уровнем ввода. Это исключение всегда выбрасывается, когда GraphicsEnvironment.isHeadless() возвращает true -
SecurityException- если разрешениеcreateRobotне предоставлено - См. также:
-
GraphicsEnvironment.isHeadless(),SecurityManager.checkPermission(java.security.Permission),AWTPermission
Robot
public Robot(GraphicsDevice screen)
throws AWTException Создаёт объект Robot для заданного устройства экрана. Координаты, переданные методам Robot, таким как mouseMove и createScreenCapture, будут интерпретироваться как находящиеся в той же системе координат, что и указанный экран. Обратите внимание, что в зависимости от конфигурации платформы несколько экранов могут:
- использовать одну и ту же систему координат для формирования объединённого виртуального экрана
- использовать разные системы координат, чтобы действовать как независимые экраны
Если устройства экрана переконфигурированы таким образом, что система координат изменяется, поведение существующих объектов Robot не определено.
- Параметры:
-
screen- Устройство GraphicsDevice экрана, указывающее систему координат, в которой будет работать Robot. - Исключение:
-
AWTException- если конфигурация платформы не допускает управления низким уровнем ввода. Это исключение всегда выбрасывается, когда GraphicsEnvironment.isHeadless() возвращает true. -
IllegalArgumentException- еслиscreenне является устройством GraphicsDevice экрана. -
SecurityException- если разрешениеcreateRobotне предоставлено - См. также:
-
GraphicsEnvironment.isHeadless(),GraphicsDevice,SecurityManager.checkPermission(java.security.Permission),AWTPermission
Методы
mouseMove
public void mouseMove(int x,
int y) Перемещает указатель мыши в заданные экранные координаты.
- Параметры:
-
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(int),InputEvent.getMaskForButton(int),Toolkit.areExtraMouseButtonsEnabled(),MouseInfo.getNumberOfButtons(),MouseEvent
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 - См. также:
-
mousePress(int),InputEvent.getMaskForButton(int),Toolkit.areExtraMouseButtonsEnabled(),MouseInfo.getNumberOfButtons(),MouseEvent
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(int),KeyEvent
keyRelease
public void keyRelease(int keycode)
Отпускает заданную клавишу.
Коды клавиш, для которых ассоциировано более одной физической клавиши (например, KeyEvent.VK_SHIFT может означать левую или правую клавишу Shift), будут сопоставлены с левой клавишей.
- Параметры:
-
keycode- Клавиша для отпускания (например,KeyEvent.VK_A) - Исключение:
-
IllegalArgumentException- еслиkeycodeне является допустимой клавишей - См. также:
-
keyPress(int),KeyEvent
getPixelColor
public Color getPixelColor(int x,
int y) Возвращает цвет пикселя в заданных экранных координатах.
- Параметры:
-
x- Позиция X пикселя -
y- Позиция Y пикселя - Возвращает:
- Цвет пикселя
createScreenCapture
public BufferedImage createScreenCapture(Rectangle screenRect)
Создаёт изображение, содержащее пиксели, прочитанные с экрана. Это изображение не включает курсор мыши.
- Параметры:
-
screenRect- Прямоугольник для захвата в экранных координатах - Возвращает:
- Захваченное изображение
- Исключение:
-
IllegalArgumentException- если ширина и высотаscreenRectне больше нуля -
SecurityException- если разрешениеreadDisplayPixelsне предоставлено - См. также:
-
SecurityManager.checkPermission(java.security.Permission),AWTPermission
isAutoWaitForIdle
public boolean isAutoWaitForIdle()
Возвращает, вызывает ли этот объект Robot автоматически waitForIdle после генерации события.
- Возвращает:
- Вызывается ли
waitForIdleавтоматически
setAutoWaitForIdle
public void setAutoWaitForIdle(boolean isOn)
Устанавливает, вызывает ли этот объект Robot автоматически waitForIdle после генерации события.
- Параметры:
-
isOn- Вызывается лиwaitForIdleавтоматически
getAutoDelay
public int getAutoDelay()
Возвращает количество миллисекунд, которое этот объект Robot ожидает после генерации события.
setAutoDelay
public void setAutoDelay(int ms)
Устанавливает количество миллисекунд, которое этот объект Robot ожидает после генерации события.
- Исключение:
-
IllegalArgumentException- Еслиmsне находится в диапазоне от 0 до 60 000 миллисекунд включительно
delay
public void delay(int ms)
Ожидает указанное время. Для перехвата любых InterruptedException используйте метод Thread.sleep().
- Параметры:
-
ms- время ожидания в миллисекундах - Исключение:
-
IllegalArgumentException- еслиmsне находится в диапазоне от 0 до 60 000 миллисекунд включительно - См. также:
Thread.sleep(long)
waitForIdle
public void waitForIdle()
Ожидает, пока все события в очереди будут обработаны.
- Исключение:
-
IllegalThreadStateException- если вызывается на потоке обработки событий AWT
toString
public String toString()
Возвращает строковое представление этого объекта Robot.
© 1993, 2020, 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.