Spec-Zone.ru › OpenJDK 17

Класс 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 автоматически waitForIdle после генерации события.
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 автоматически waitForIdle после генерации события.
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, getPixelColor и 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() следующим образом:

  • Если поддержка расширенных кнопок мыши 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
См. также:
  • 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() следующим образом:

  • Если поддержка расширенных кнопок мыши 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
См. также:
  • 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 ждёт после генерации события.
Возвращает:
Продолжительность задержки в миллисекундах

setAutoDelay

public void setAutoDelay(int ms)
Устанавливает количество миллисекунд, которые этот объект Robot ждёт после генерации события.
Параметры:
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()
Возвращает строковое представление объекта Robot.
Переопределяет:
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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API