Класс Robot
public class Robot extends Object
Использование класса для генерации событий ввода отличается от отправки событий в очередь событий AWT или компонентам AWT тем, что события генерируются в собственной очереди ввода платформы. Например, Robot.mouseMove фактически переместит курсор мыши, а не просто сгенерирует события перемещения мыши.
Обратите внимание, что некоторые платформы требуют специальных привилегий или расширений для доступа к управлению вводом на низком уровне. Если текущая конфигурация платформы не позволяет контролировать ввод, при попытке создания объектов Robot будет выброшено AWTException. Например, системы X-Window выбросят исключение, если расширение XTEST 2.2 не поддерживается (или не включено) сервером X.
Приложения, использующие Robot для целей, отличных от самотестирования, должны корректно обрабатывать эти условия ошибки.
- Since:
- 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 -
SecurityException- если разрешениеcreateRobotне предоставлено - См. также:
Robot
public Robot(GraphicsDevice screen) throws AWTException
- объединить свою систему координат, чтобы сформировать комбинированный виртуальный экран
- использовать различные системы координат, чтобы действовать как независимые экраны
Если устройства экрана переконфигурированы таким образом, что система координат изменяется, поведение существующих объектов Robot не определено.
- Параметры:
-
screen- Объект GraphicsDevice экрана, указывающий систему координат, в которой будет работать Robot. - Возможные исключения:
-
AWTException- если конфигурация платформы не позволяет управлять низкоуровневым вводом. Это исключение всегда выбрасывается, когда GraphicsEnvironment.isHeadless() возвращает true. -
IllegalArgumentException- еслиscreenне является GraphicsDevice экрана. -
SecurityException- если разрешениеcreateRobotне предоставлено - См. также:
Подробное описание методов
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
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)
- Параметры:
-
x- X-позиция пикселя -
y- Y-позиция пикселя - Возвращает:
- Цвет пикселя
createScreenCapture
public BufferedImage createScreenCapture(Rectangle screenRect)
- Параметры:
-
screenRect- Прямоугольник для захвата в координатах экрана - Возвращает:
- Захваченное изображение
- Исключение:
-
IllegalArgumentException- еслиscreenRectширина и высота не больше нуля -
SecurityException- еслиreadDisplayPixelsразрешение не предоставлено - См. также:
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
- См. также:
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
public String toString()
- Переопределяет:
-
toStringв классеObject - Возвращает:
- строковое представление.
© 1993, 2021, 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/17/docs/api/java.desktop/java/awt/Robot.html