Класс 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 для указанного устройства экрана. |
Методы
| Модификатор и тип | Метод | Описание |
|---|---|---|
MultiResolutionImage | createMultiResolutionScreenCapture(Rectangle screenRect) | Создаёт изображение, содержащее пиксели, считанные с экрана. |
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 в системе координат основного экрана.
- Throws:
-
AWTException- если конфигурация платформы не позволяет управлять вводом на низком уровне. Это исключение всегда выбрасывается, когда GraphicsEnvironment.isHeadless() возвращает true -
SecurityException- если разрешениеcreateRobotне предоставлено - See Also:
-
GraphicsEnvironment.isHeadless(),SecurityManager.checkPermission(java.security.Permission),AWTPermission
Robot
public Robot(GraphicsDevice screen)
throws AWTException Создаёт Robot для указанного устройства экрана. Координаты, передаваемые методам Robot, таким как mouseMove, getPixelColor и createScreenCapture, будут интерпретироваться как имеющие ту же систему координат, что и указанный экран. Обратите внимание, что в зависимости от конфигурации платформы несколько экранов могут либо:
- использовать одну и ту же систему координат для формирования объединённого виртуального экрана
- использовать различные системы координат для работы как независимых экранов
Если конфигурация устройств экрана изменяется таким образом, что система координат затрагивается, поведение существующих объектов Robot не определено.
- Parameters:
-
screen- Устройство GraphicsDevice экрана, указывающее систему координат, в которой будет работать Robot. - Throws:
-
AWTException- если конфигурация платформы не позволяет управлять вводом на низком уровне. Это исключение всегда выбрасывается, когда GraphicsEnvironment.isHeadless() возвращает true. -
IllegalArgumentException- еслиscreenне является устройством GraphicsDevice экрана. -
SecurityException- если разрешениеcreateRobotне предоставлено - See Also:
-
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содержит маску для дополнительной кнопки мыши, и поддержка расширенных кнопок мышиdisabledв Java -
IllegalArgumentException- если маскаbuttonsсодержит маску для дополнительной кнопки мыши, которая отсутствует на мыши, и поддержка расширенных кнопок мышиenabledв Java - См. также:
-
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содержит маску для дополнительной кнопки мыши, и поддержка расширенных кнопок мышиdisabledв Java -
IllegalArgumentException- если маскаbuttonsсодержит маску для дополнительной кнопки мыши, которая отсутствует на мыши, и поддержка расширенных кнопок мышиenabledв Java - См. также:
-
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
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- если разрешениеreadDisplayPixelsне предоставлено - С тех пор:
- 9
- См. также:
-
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 ждет после генерации события.
- Возвращает:
- Продолжительность задержки в миллисекундах
Установить задержку
public void setAutoDelay(int ms)
Устанавливает количество миллисекунд, в течение которых этот объект Robot будет ожидать после генерации события.
- Параметры:
-
ms- длительность задержки в миллисекундах - Исключения:
-
IllegalArgumentException- Еслиmsне находится в диапазоне от 0 до 60 000 миллисекунд включительно
Задержка
public void delay(int ms)
Ожидание в течение указанного времени. Для перехвата любых InterruptedException событий, которые могут произойти, можно использовать Thread.sleep() вместо него.
- Параметры:
-
ms- время ожидания в миллисекундах - Исключения:
-
IllegalArgumentException- еслиmsне находится в диапазоне от 0 до 60 000 миллисекунд включительно - См. также:
Thread.sleep(long)
Ожидание завершения
public void waitForIdle()
Ожидает, пока все события, в настоящее время находящиеся в очереди событий, не будут обработаны.
- Исключения:
-
IllegalThreadStateException- если вызвана на потоке обработки событий AWT
Преобразование в строку
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.
https://docs.oracle.com/en/java/javase/11/docs/api/java.desktop/java/awt/Robot.html