public class Robot extends Object
使用类生成输入事件不同于将事件发布到AWT事件队列或AWT组件,因为事件在平台的本机输入队列中生成。 例如, Robot.mouseMove实际上将移动鼠标光标,而不是仅生成鼠标移动事件。
请注意,某些平台需要特殊权限或扩展才能访问低级别的输入控制。 如果当前平台配置不允许输入控制,一个AWTException将尝试构建机器人对象时抛出。 例如,如果X服务器不支持(或未启用)XTEST 2.2标准扩展名,则X-Window系统将抛出异常。
使用Robot进行自检以外的其他应用程序应优先处理这些错误条件。
| Constructor and Description |
|---|
Robot()
在主屏幕的坐标系中构造一个Robot对象。
|
Robot(GraphicsDevice screen)
为给定的屏幕设备创建一个机器人。
|
| Modifier and Type | Method and Description |
|---|---|
BufferedImage |
createScreenCapture(Rectangle screenRect)
创建包含从屏幕读取的像素的图像。
|
void |
delay(int ms)
睡在指定的时间。
|
int |
getAutoDelay()
返回此机器人在生成事件后休眠的毫秒数。
|
Color |
getPixelColor(int x, int y)
返回给定屏幕坐标处的像素颜色。
|
boolean |
isAutoWaitForIdle()
返回此机器人是否在生成事件后自动调用
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)
设置机器人在生成事件后睡眠的毫秒数。
|
void |
setAutoWaitForIdle(boolean isOn)
设置此机器人是否在生成事件后自动调用
waitForIdle 。
|
String |
toString()
返回此Robot的字符串表示形式。
|
void |
waitForIdle()
等待直到事件队列上的所有事件都处理完毕。
|
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,指示机器人将在其中操作的坐标系。
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(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 ,那么如果鼠标有三个以上的按钮,则可以使用现有的扩展鼠标按钮的标准按钮掩码和掩码。 以这种方式,可以使用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面具包含鼠标不存在的额外鼠标按钮的掩码,并且支持扩展鼠标按钮是由Java提供的
enabled
mouseRelease(int) , InputEvent.getMaskForButton(int) , Toolkit.areExtraMouseButtonsEnabled() , MouseInfo.getNumberOfButtons() , MouseEvent
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 ,那么如果鼠标有三个以上的按钮,则可以使用现有扩展鼠标按钮的标准按钮掩码和掩码。 这样,可以使用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蒙版包含鼠标不存在的额外鼠标按钮的掩码,并且支持扩展鼠标按钮是由Java提供的是
enabled
mousePress(int) , InputEvent.getMaskForButton(int) , Toolkit.areExtraMouseButtonsEnabled() , MouseInfo.getNumberOfButtons() , MouseEvent
public void mouseWheel(int wheelAmt)
wheelAmt - 移动鼠标滚轮的“凹口”数量负值表示向上/远离用户的移动,正值表示朝向用户移动。
public void keyPress(int keycode)
keyRelease方法发布。
具有与其相关联的多个物理键的键代码(例如, KeyEvent.VK_SHIFT可以表示左移或右移键)将映射到左键。
keycode - 按键(例如
KeyEvent.VK_A )
IllegalArgumentException - 如果
keycode不是有效的密钥
keyRelease(int) , KeyEvent
public void keyRelease(int keycode)
具有与其相关联的多个物理键的键代码(例如, KeyEvent.VK_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 - 矩形捕获在屏幕坐标
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事件调度线程上调用
Submit a bug or feature
For further API reference and developer documentation, see Java SE Documentation. That documentation contains more detailed, developer-targeted descriptions, with conceptual overviews, definitions of terms, workarounds, and working code examples.
Copyright © 1993, 2014, Oracle and/or its affiliates. All rights reserved.