所有类


java.awt
类 Robot

java.lang.Object
  继承者 java.awt.Robot

public class Robot
   
   
   
   
   
extends Object

此类用于为测试自动化、自运行演示程序和其他需要控制鼠标和键盘的应用程序生成本机系统输入事件。Robot 的主要目的是便于 Java 平台实现自动测试。

使用该类生成输入事件与将事件发送到 AWT 事件队列或 AWT 组件的区别在于:事件是在平台的本机输入队列中生成的。例如,Robot.mouseMove 将实际移动鼠标光标,而不是只生成鼠标移动事件。

注意,某些平台需要特定权限或扩展来访问低级输入控件。如果当前平台配置不允许使用输入控件,那么试图构造 Robot 对象时将抛出 AWTException。例如,如果 X 服务器不支持(或没有启用)XTEST 2.2 标准扩展,则 X-Window 系统会抛出异常。

出于自测试之外的目的而使用 Robot 的应用程序应妥善处理这些错误条件。

从以下版本开始:
1.3

构造方法摘要
Robot()
          在基本屏幕坐标系统中构造一个 Robot 对象。
Robot(GraphicsDevice screen)
          为给定屏幕设备创建一个 Robot 。
 
方法摘要
 BufferedImagecreateScreenCapture(Rectangle screenRect)
          创建包含从屏幕中读取的像素的图像。
 voiddelay(int ms)
          睡眠指定的时间。
 intgetAutoDelay()
          返回此 Robot 在生成一个事件后睡眠的毫秒数。
 ColorgetPixelColor(int x, int y)
          返回给定屏幕坐标处的像素颜色。
 booleanisAutoWaitForIdle()
          返回此 Robot 在生成一个事件后是否自动调用 waitForIdle
 voidkeyPress(int keycode)
          按下给定的键。
 voidkeyRelease(int keycode)
          释放给定的键。
 voidmouseMove(int x, int y)
          将鼠标指针移动到给定屏幕坐标。
 voidmousePress(int buttons)
          按下一个或多个鼠标按钮。
 voidmouseRelease(int buttons)
          释放一个或多个鼠标按钮。
 voidmouseWheel(int wheelAmt)
          在配有滚轮的鼠标上旋转滚轮。
 voidsetAutoDelay(int ms)
          设置此 Robot 在生成一个事件后睡眠的毫秒数。
 voidsetAutoWaitForIdle(boolean isOn)
          设置此 Robot 在生成一个事件后是否自动调用 waitForIdle
 StringtoString()
          返回此 Robot 的字符串表示形式。
 voidwaitForIdle()
          在处理完当前事件队列中的所有事件之前,一直等待。
 
从类 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 方法释放鼠标按钮。

参数:
buttons - Button 掩码;一个或多个以下标志的组合:
  • InputEvent.BUTTON1_MASK
  • InputEvent.BUTTON2_MASK
  • InputEvent.BUTTON3_MASK
抛出:
IllegalArgumentException - 如果按钮掩码是无效组合
另请参见:
mouseRelease(int)

mouseRelease

public void mouseRelease(int buttons)
释放一个或多个鼠标按钮。

参数:
buttons - Button 掩码;一个或多个以下标志的组合:
  • InputEvent.BUTTON1_MASK
  • InputEvent.BUTTON2_MASK
  • InputEvent.BUTTON3_MASK
抛出:
IllegalArgumentException - 如果按钮掩码是无效组合
另请参见:
mousePress(int)

mouseWheel

public void mouseWheel(int wheelAmt)
在配有滚轮的鼠标上旋转滚轮。

参数:
wheelAmt - 移动鼠标滚轮的“刻痕 (notch)”数,负值表示向上/远离用户的运动,正值表示向下/接近用户的运动。
从以下版本开始:
1.4

keyPress

public void keyPress(int keycode)
按下给定的键。应该使用 keyRelease 方法释放该键。

拥有一个以上与之相关的物理键(例如,KeyEvent.VK_SHIFT 可能指左 shift 键或右 shift 键)的键代码可能映射到左键。

参数:
keycode - 要按下的键(例如,KeyEvent.VK_A
抛出:
IllegalArgumentException - 如果 keycode 是一个无效的键
另请参见:
keyRelease(int), KeyEvent

keyRelease

public void keyRelease(int keycode)
释放给定的键。

拥有一个以上与之相关的物理键(例如,KeyEvent.VK_SHIFT 可能指左 shift 键或右 shift 键)的键代码可能映射到左键。

参数:
keycode - 要释放的键(例如,KeyEvent.VK_A
抛出:
IllegalArgumentException - 如果 keycode 是一个无效的键
另请参见:
keyPress(int), KeyEvent