java.lang.Object
java.awt.Robot
public class Robotextends Object
此类用于为测试自动化、自运行演示程序和其他需要控制鼠标和键盘的应用程序生成本机系统输入事件。Robot 的主要目的是便于 Java 平台实现自动测试。
使用该类生成输入事件与将事件发送到 AWT 事件队列或 AWT 组件的区别在于:事件是在平台的本机输入队列中生成的。例如,Robot.mouseMove 将实际移动鼠标光标,而不是只生成鼠标移动事件。
注意,某些平台需要特定权限或扩展来访问低级输入控件。如果当前平台配置不允许使用输入控件,那么试图构造 Robot 对象时将抛出 AWTException。例如,如果 X 服务器不支持(或没有启用)XTEST 2.2 标准扩展,则 X-Window 系统会抛出异常。
出于自测试之外的目的而使用 Robot 的应用程序应妥善处理这些错误条件。
从以下版本开始:
1.3
构造方法摘要
Robot()
在基本屏幕坐标系统中构造一个 Robot 对象。
Robot(GraphicsDevicescreen)
为给定屏幕设备创建一个 Robot 。
方法摘要
BufferedImage
createScreenCapture(RectanglescreenRect)
创建包含从屏幕中读取的像素的图像。
void
delay(intms)
睡眠指定的时间。
int
getAutoDelay()
返回此 Robot 在生成一个事件后睡眠的毫秒数。
Color
getPixelColor(intx,
inty)
返回给定屏幕坐标处的像素颜色。
boolean
isAutoWaitForIdle()
返回此 Robot 在生成一个事件后是否自动调用 waitForIdle。
void
keyPress(intkeycode)
按下给定的键。
void
keyRelease(intkeycode)
释放给定的键。
void
mouseMove(intx,
inty)
将鼠标指针移动到给定屏幕坐标。
void
mousePress(intbuttons)
按下一个或多个鼠标按钮。
void
mouseRelease(intbuttons)
释放一个或多个鼠标按钮。
void
mouseWheel(intwheelAmt)
在配有滚轮的鼠标上旋转滚轮。
void
setAutoDelay(intms)
设置此 Robot 在生成一个事件后睡眠的毫秒数。
void
setAutoWaitForIdle(booleanisOn)
设置此 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(GraphicsDevicescreen)
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(intx,
inty)
将鼠标指针移动到给定屏幕坐标。
参数:x – X 坐标y – Y 坐标
mousePress
public void mousePress(intbuttons)
按下一个或多个鼠标按钮。应该使用 mouseRelease 方法释放鼠标按钮。
参数:buttons – Button 掩码;一个或多个以下标志的组合:
InputEvent.BUTTON1_MASK
InputEvent.BUTTON2_MASK
InputEvent.BUTTON3_MASK抛出:IllegalArgumentException – 如果按钮掩码是无效组合另请参见:mouseRelease(int)
mouseRelease
public void mouseRelease(intbuttons)
释放一个或多个鼠标按钮。
参数:buttons – Button 掩码;一个或多个以下标志的组合:
InputEvent.BUTTON1_MASK
InputEvent.BUTTON2_MASK
InputEvent.BUTTON3_MASK抛出:IllegalArgumentException – 如果按钮掩码是无效组合另请参见:mousePress(int)
mouseWheel
public void mouseWheel(intwheelAmt)
在配有滚轮的鼠标上旋转滚轮。
参数:wheelAmt – 移动鼠标滚轮的“刻痕 (notch)”数,负值表示向上/远离用户的运动,正值表示向下/接近用户的运动。从以下版本开始:
1.4
keyPress
public void keyPress(intkeycode)
按下给定的键。应该使用 keyRelease 方法释放该键。
拥有一个以上与之相关的物理键(例如,KeyEvent.VK_SHIFT 可能指左 shift 键或右 shift 键)的键代码可能映射到左键。
参数:keycode – 要按下的键(例如,KeyEvent.VK_A)抛出:IllegalArgumentException – 如果 keycode 是一个无效的键另请参见:keyRelease(int),
KeyEvent
keyRelease
public void keyRelease(intkeycode)
释放给定的键。
拥有一个以上与之相关的物理键(例如,KeyEvent.VK_SHIFT 可能指左 shift 键或右 shift 键)的键代码可能映射到左键。
参数:keycode – 要释放的键(例如,KeyEvent.VK_A)抛出:IllegalArgumentException – 如果 keycode 是一个无效的键另请参见:keyPress(int),
KeyEvent
getPixelColor
public Color getPixelColor(intx,
inty)
返回给定屏幕坐标处的像素颜色。
参数:x – 像素的 X 位置y – 像素的 Y 位置返回:像素的颜色
createScreenCapture
public BufferedImage createScreenCapture(RectanglescreenRect)
创建包含从屏幕中读取的像素的图像。该图像不包括鼠标光标。
参数:screenRect – 将在屏幕坐标中捕获的 Rect返回:捕获的图像抛出:IllegalArgumentException – 如果 screenRect 的宽度和高度不大于零
SecurityException – 如果没有授予 readDisplayPixels 权限另请参见:SecurityManager.checkPermission(java.security.Permission),
AWTPermission
isAutoWaitForIdle
public boolean isAutoWaitForIdle()
返回此 Robot 在生成一个事件后是否自动调用 waitForIdle。
返回:是否自动调用 waitForIdle
setAutoWaitForIdle
public void setAutoWaitForIdle(booleanisOn)
设置此 Robot 在生成一个事件后是否自动调用 waitForIdle。
参数:isOn – 是否自动调用 waitForIdle
getAutoDelay
public int getAutoDelay()
返回此 Robot 在生成一个事件后睡眠的毫秒数。
setAutoDelay
public void setAutoDelay(intms)
设置此 Robot 在生成一个事件后睡眠的毫秒数。
抛出:IllegalArgumentException – 如果 ms 不在 0 到 60,000 毫秒的范围内
delay
public void delay(intms)
睡眠指定的时间。为了捕获发生的所有 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
返回:字符串表示形式。