java.lang.Object java.awt.Robot
public class Robot
此类用于为测试自动化、自运行演示程序和其他需要控制鼠标和键盘的应用程序生成本机系统输入事件。Robot 的主要目的是便于 Java 平台实现自动测试。
使用该类生成输入事件与将事件发送到 AWT 事件队列或 AWT 组件的区别在于:事件是在平台的本机输入队列中生成的。例如,Robot.mouseMove
将实际移动鼠标光标,而不是只生成鼠标移动事件。
注意,某些平台需要特定权限或扩展来访问低级输入控件。如果当前平台配置不允许使用输入控件,那么试图构造 Robot 对象时将抛出 AWTException
。例如,如果 X 服务器不支持(或没有启用)XTEST 2.2 标准扩展,则 X-Window 系统会抛出异常。
出于自测试之外的目的而使用 Robot 的应用程序应妥善处理这些错误条件。
构造方法摘要 | |
---|---|
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 |
构造方法详细信息 |
---|
public Robot() throws AWTException
AWTException
- 如果平台配置不允许使用低级输入控件。GraphicsEnvironment.isHeadless() 返回 true 时总是抛出此异常
SecurityException
- 如果没有授予
createRobot
权限
GraphicsEnvironment.isHeadless()
,
SecurityManager.checkPermission(java.security.Permission)
,
AWTPermission
public Robot(GraphicsDevice screen) throws AWTException
如果因配置屏幕设备而影响了坐标系,则现有 Robot 对象的行为是不确定的。
screen
- 一个屏幕 GraphicsDevice,指示 Robot 将在该坐标系中进行操作。
AWTException
- 如果平台配置不允许使用低级输入控件。GraphicsEnvironment.isHeadless() 返回 true 时总是抛出此异常。
IllegalArgumentException
- 如果
screen
不是一个屏幕 GraphicsDevice。
SecurityException
- 如果没有授予
createRobot
权限
GraphicsEnvironment.isHeadless()
,
GraphicsDevice
,
SecurityManager.checkPermission(java.security.Permission)
,
AWTPermission
方法详细信息 |
---|
public void mouseMove(int x, int y)
x
- X 坐标
y
- Y 坐标
public void mousePress(int buttons)
mouseRelease
方法释放鼠标按钮。
buttons
- Button 掩码;一个或多个以下标志的组合:
InputEvent.BUTTON1_MASK
InputEvent.BUTTON2_MASK
InputEvent.BUTTON3_MASK
IllegalArgumentException
- 如果按钮掩码是无效组合
mouseRelease(int)
public void mouseRelease(int buttons)
buttons
- Button 掩码;一个或多个以下标志的组合:
InputEvent.BUTTON1_MASK
InputEvent.BUTTON2_MASK
InputEvent.BUTTON3_MASK
IllegalArgumentException
- 如果按钮掩码是无效组合
mousePress(int)
public void mouseWheel(int wheelAmt)
wheelAmt
- 移动鼠标滚轮的“刻痕 (notch)”数,负值表示向上/远离用户的运动,正值表示向下/接近用户的运动。
public void keyPress(int keycode)
keyRelease
方法释放该键。
拥有一个以上与之相关的物理键(例如,KeyEvent.VK_SHIFT
可能指左 shift 键或右 shift 键)的键代码可能映射到左键。
keycode
- 要按下的键(例如,
KeyEvent.VK_A
)
IllegalArgumentException
- 如果
keycode
是一个无效的键
keyRelease(int)
,
KeyEvent
public void keyRelease(int keycode)
拥有一个以上与之相关的物理键(例如,KeyEvent.VK_SHIFT
可能指左 shift 键或右 shift 键)的键代码可能映射到左键。
keycode
- 要释放的键(例如,
KeyEvent.VK_A
)
IllegalArgumentException
- 如果
keycode
是一个无效的键
keyPress(int)
,
KeyEvent
public Color getPixelColor(int x, int y)
x
- 像素的 X 位置
y
- 像素的 Y 位置
public BufferedImage createScreenCapture(Rectangle screenRect)
screenRect
- 将在屏幕坐标中捕获的 Rect
IllegalArgumentException
- 如果
screenRect
的宽度和高度不大于零
SecurityException
- 如果没有授予
readDisplayPixels
权限
SecurityManager.checkPermission(java.security.Permission)
,
AWTPermission
public boolean isAutoWaitForIdle()
waitForIdle
。
waitForIdle
public void setAutoWaitForIdle(boolean isOn)
waitForIdle
。
isOn
- 是否自动调用
waitForIdle
public int getAutoDelay()
public void setAutoDelay(int ms)
IllegalArgumentException
- 如果
ms
不在 0 到 60,000 毫秒的范围内
public void delay(int ms)
InterruptedException
,可以使用
Thread.sleep()
替代。
ms
- 睡眠的时间,以毫秒为单位
IllegalArgumentException
- 如果
ms
不在 0 到 60,000 毫秒的范围内
Thread.sleep(long)
public void waitForIdle()
IllegalThreadStateException
- 如果调用 AWT 事件指派线程
public String toString()