JavaTM Platform
Standard Ed. 6

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 。
 
方法摘要
 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 和 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

getPixelColor

public Color getPixelColor(int x,
                           int y)
返回给定屏幕坐标处的像素颜色。

参数:
x - 像素的 X 位置
y - 像素的 Y 位置
返回:
像素的颜色

createScreenCapture

public BufferedImage createScreenCapture(Rectangle screenRect)
创建包含从屏幕中读取的像素的图像。该图像不包括鼠标光标。

参数:
screenRect - 将在屏幕坐标中捕获的 Rect
返回:
捕获的图像
抛出:
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 的字符串表示形式。

覆盖:
Object 中的 toString
返回:
字符串表示形式。

JavaTM Platform
Standard Ed. 6

提交错误或意见
有关更多的 API 参考资料和开发人员文档,请参阅 Java SE 开发人员文档。该文档包含更详细的、面向开发人员的描述,以及总体概述、术语定义、使用技巧和工作代码示例。

版权所有 2007 Sun Microsystems, Inc. 保留所有权利。 请遵守许可证条款。另请参阅文档重新分发政策