public class Robot extends Object
使用类来生成输入事件不同于发帖事件的AWT事件队列或AWT组件,事件是在平台的本地输入队列生成。例如,Robot.mouseMove
会移动鼠标而不是生成鼠标移动事件。
请注意,一些平台需要特殊的权限或扩展以访问低级别的输入控制。如果当前平台配置不允许输入控件,一个AWTException
将试图构建机器人对象时引发。例如,X-Window系统如果Xtest 2.2标准扩展不支持抛出异常(或不启用)由X服务器。
除了自我测试以外使用机器人的应用程序应该优雅地处理这些错误条件。
Constructor and Description |
---|
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()
返回此机器人的字符串表示形式。
|
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
如果屏幕设备重新配置这样的坐标系统受到影响,现有机器人对象的行为是未定义的。
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.getMaskForButton(button)
方法返回InputEvent.BUTTON3_DOWN_MASK
和价值。有效组合还取决于Toolkit.areExtraMouseButtonsEnabled()
值如下:
disabled
通过java然后只允许使用以下标准按钮面具:InputEvent.BUTTON1_DOWN_MASK
,InputEvent.BUTTON2_DOWN_MASK
,InputEvent.BUTTON3_DOWN_MASK
。enabled
通过java则允许使用标准按钮的面具和面具已有扩展的鼠标按钮,如果鼠标有三个按钮。这样,可以使用按钮的面具在范围从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
面膜含有额外的鼠标按钮和鼠标按钮支持扩展的面具是用java
disabled
IllegalArgumentException
-如果
buttons
面膜面膜额外的鼠标按钮不在鼠标和鼠标按钮的存在是
enabled
扩展支持的java
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.getMaskForButton(button)
方法返回InputEvent.BUTTON3_DOWN_MASK
和价值。有效组合还取决于Toolkit.areExtraMouseButtonsEnabled()
值如下:
disabled
通过java然后只允许使用以下标准按钮面具:InputEvent.BUTTON1_DOWN_MASK
,InputEvent.BUTTON2_DOWN_MASK
,InputEvent.BUTTON3_DOWN_MASK
。enabled
通过java则允许使用标准按钮的面具和面具已有扩展的鼠标按钮,如果鼠标有三个按钮。这样,可以使用按钮的面具在范围从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
面膜含有额外的鼠标按钮和鼠标按钮支持扩展的面具是用java
disabled
IllegalArgumentException
-如果
buttons
面膜面膜额外的鼠标按钮不在鼠标和鼠标按钮的存在是
enabled
扩展支持的java
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
可能意味着无论是左或右Shift键)将Map左键。
keycode
键按下(如
KeyEvent.VK_A
)
IllegalArgumentException
-如果
keycode
不是有效的关键
keyRelease(int)
,
KeyEvent
public void keyRelease(int keycode)
有更多比与它们相关联的物理密钥代码(如KeyEvent.VK_SHIFT
可能意味着无论是左或右Shift键)将Map左键。
keycode
键释放(如
KeyEvent.VK_A
)
IllegalArgumentException
-如果
keycode
不是有效的关键
keyPress(int)
,
KeyEvent
public Color getPixelColor(int x, int y)
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和60000毫秒之间
public void delay(int ms)
InterruptedException
s发生,
Thread.sleep()
可以代替。
ms
-睡眠时间以毫秒为单位
IllegalArgumentException
-如果
ms
不是0和60000毫秒之间
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.