JavaTM 2 Platform
Standard Ed. 6

java.awt
類別 Robot

java.lang.Object
  繼承者 java.awt.Robot

public class Robot
extends Object

此類別用於為測試自動化、自運行演示程序和其他需要控制鼠標和鍵盤的應用程序產生本機系統輸入事件。Robot 的主要目的是便於 Java 平臺實作自動測試。

使用該類別產生輸入事件與將事件發送到 AWT 事件佇列或 AWT 元件的區別在於:事件是在平臺的本機輸入佇列中產生的。例如,Robot.mouseMove 將實際移動鼠標鼠標,而不是只產生鼠標移動事件。

注意,某些平臺需要特定權限或擴展來存取低層級輸入控制元件。如果當前平臺配置不允許使用輸入控制元件,那麼試圖建構 Robot 物件時將拋出 AWTException。例如,如果 X 伺服器不支持(或沒有啟用)XTEST 2.2 標準擴展,則 X-Window 系統會拋出異常。

出於自測試之外的目的而使用 Robot 的應用程序應妥善處理這些錯誤條件。

從以下版本開始:
1.3

建構子摘要
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
 

建構子詳細資訊

Robot

public Robot()
      throws AWTException
在基本螢幕坐標系中建構一個 Robot 物件。

拋出:
AWTException - 如果平臺配置不允許使用低層級輸入控制元件。GraphicsEnvironment.isHeadless() 返回 true 時總是拋出此異常
SecurityException - 如果沒有授予 createRobot 權限
另請參見:
GraphicsEnvironment.isHeadless(), SecurityManager.checkPermission(java.security.Permission), AWTPermission

Robot

public Robot(GraphicsDevice screen)
      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(int x,
                      int y)
將鼠標指針移動到給定螢幕坐標。

參數:
x - X 坐標
y - Y 坐標

mousePress

public void mousePress(int buttons)
按下一個或多個鼠標按鈕。應該使用 mouseRelease 方法釋放鼠標按鈕。

參數:
buttons - Button 遮罩碼;一個或多個以下標誌的組合:
  • InputEvent.BUTTON1_MASK
  • InputEvent.BUTTON2_MASK
  • InputEvent.BUTTON3_MASK
拋出:
IllegalArgumentException - 如果按鈕遮罩碼是無效組合
另請參見:
mouseRelease(int)

mouseRelease

public void mouseRelease(int buttons)
釋放一個或多個鼠標按鈕。

參數:
buttons - Button 遮罩碼;一個或多個以下標誌的組合:
  • InputEvent.BUTTON1_MASK
  • InputEvent.BUTTON2_MASK
  • InputEvent.BUTTON3_MASK
拋出:
IllegalArgumentException - 如果按鈕遮罩碼是無效組合
另請參見:
mousePress(int)

mouseWheel

public void mouseWheel(int wheelAmt)
在配有滾輪的鼠標上旋轉滾輪。

參數:
wheelAmt - 移動鼠標滾輪的“刻痕 (notch)”數,負值表示向上/遠離使用者的運動,正值表示向下/接近使用者的運動。
從以下版本開始:
1.4

keyPress

public void keyPress(int keycode)
按下給定的鍵。應該使用 keyRelease 方法釋放該鍵。

擁有一個以上與之相關的物理鍵(例如,KeyEvent.VK_SHIFT 可能指左 shift 鍵或右 shift 鍵)的鍵程式碼可能映射到左鍵。

參數:
keycode - 要按下的鍵(例如,KeyEvent.VK_A
拋出:
IllegalArgumentException - 如果 keycode 是一個無效的鍵
另請參見:
keyRelease(int), KeyEvent

keyRelease

public void keyRelease(int keycode)
釋放給定的鍵。

擁有一個以上與之相關的物理鍵(例如,KeyEvent.VK_SHIFT 可能指左 shift 鍵或右 shift 鍵)的鍵程式碼可能映射到左鍵。

參數:
keycode - 要釋放的鍵(例如,KeyEvent.VK_A
拋出:
IllegalArgumentException - 如果 keycode 是一個無效的鍵
另請參見:
keyPress(int), KeyEvent

getPixelColor

public Color getPixelColor(int x,
                           int y)
返回給定螢幕坐標處的像素顏色。

參數:
x - 像素的 X 位置
y - 像素的 Y 位置
返回:
像素的顏色

createScreenCapture

public BufferedImage createScreenCapture(Rectangle screenRect)
創建包含從螢幕中讀取的像素的圖像。該圖像不包括鼠標鼠標。

參數:
screenRect - 將在螢幕坐標中捕獲的 Rect
返回:
捕獲的圖像
拋出:
IllegalArgumentException - 如果 screenRect 的寬度和高度不大於零
SecurityException - 如果沒有授予 readDisplayPixels 權限
另請參見:
SecurityManager.checkPermission(java.security.Permission), AWTPermission

isAutoWaitForIdle

public boolean isAutoWaitForIdle()
返回此 Robot 在產生一個事件後是否自動調用 waitForIdle

返回:
是否自動調用 waitForIdle

setAutoWaitForIdle

public void setAutoWaitForIdle(boolean isOn)
設置此 Robot 在產生一個事件後是否自動調用 waitForIdle

參數:
isOn - 是否自動調用 waitForIdle

getAutoDelay

public int getAutoDelay()
返回此 Robot 在產生一個事件後睡眠的毫秒數。


setAutoDelay

public void setAutoDelay(int ms)
設置此 Robot 在產生一個事件後睡眠的毫秒數。

拋出:
IllegalArgumentException - 如果 ms 不在 0 到 60,000 毫秒的範圍內

delay

public void delay(int ms)
睡眠指定的時間。為了捕獲發生的所有 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
返回:
字元串表示形式。

JavaTM 2 Platform
Standard Ed. 6

提交錯誤或意見

版權所有 2008 Sun Microsystems, Inc. 保留所有權利。請遵守GNU General Public License, version 2 only