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事件调度线程上调用