クラスを使用して、AWTイベント・キューへのイベント転送またはプラットフォームのネイティブな入力キューで生成されるAWTコンポーネントとは異なる、入力イベントを生成します。 たとえばRobot.mouseMoveでは、マウスの移動イベントを生成するだけではなく、マウスのカーソルを実際に動かします。
一部のプラットフォームでは、低レベル入力制御にアクセスするための、特別な特権または拡張機能が必要です。 現在のプラットフォーム構成では入力制御を行えない場合、Robotオブジェクトを構築しようとするとAWTExceptionがスローされます。 たとえば、XサーバーでXTEST 2.2標準拡張機能がサポートされていない、または使用できない場合、X Windowシステムは例外をスローします。
セルフ・テスト以外の目的でRobotを使用するアプリケーションでは、これらの例外条件を正常に処理する必要があります。
プラットフォームおよびデスクトップ環境では、Robotクラスのすべての機能を実装するために必要なアクセスに制限または制限が課される場合があります。 たとえば:
- 実行中のアプリケーションによって所有されていないデスクトップまたはデスクトップ上のウィンドウの内容にアクセスできないようにします。
- ウィンドウ装飾を非所有コンテンツとして扱う。
- ウィンドウを操作するための特定のリクエストを無視または制限します。
- ロボットの特定のリクエストを無視または制限すると、キーボードやマウスなどに関連する (合成)イベントが生成されます。
- ウィンドウの内容、アプリケーション所有のコンテンツ、またはイベントの限定的な合成を実行するための特定の権限またはグローバル権限が必要です。
- 毎回必要
- もしくはアプリケーション期間中、
- または複数のユーザー・デスクトップ・セッションで永続
- ファイングレイン権限
- 特定のバイナリ・アプリケーション、またはバイナリ・アプリケーションのクラスに関連付けられます。
- 導入されたバージョン:
- 1.3
-
コンストラクタのサマリー
コンストラクタコンストラクタ説明Robot()プライマリ・スクリーンの座標システムでRobotオブジェクトを構築します。Robot(GraphicsDevice screen) 指定されたスクリーン・デバイスにRobotを作成します。 -
メソッドのサマリー
修飾子と型メソッド説明createMultiResolutionScreenCapture(Rectangle screenRect) スクリーンから読み取るピクセルを含むイメージを作成します。createScreenCapture(Rectangle screenRect) スクリーンから読み取るピクセルを含むイメージを作成します。voiddelay(int ms) 指定時間スリープします。intイベント生成後、このRobotがスリープする時間をミリ秒で返します。getPixelColor(int x, int y) 指定されたスクリーン座標でピクセルの色を返します。booleanイベントを生成したあと、このRobotがwaitForIdleを自動的に呼び出すかどうかを返します。voidkeyPress(int keycode) 指定されたキーを押します。voidkeyRelease(int keycode) 指定されたキーを離します。voidmouseMove(int x, int y) 指定したスクリーン座標にマウス・ポインタを移動します。voidmousePress(int buttons) 1つまたは複数のマウス・ボタンを押します。voidmouseRelease(int buttons) 1つまたは複数のマウス・ボタンを離します。voidmouseWheel(int wheelAmt) ホイール・マウスのホイール・スクロールを回転させます。voidsetAutoDelay(int ms) イベント生成後、このRobotがスリープする時間をミリ秒で設定します。voidsetAutoWaitForIdle(boolean isOn) イベントを生成したあと、このRobotがwaitForIdleを自動的に呼び出すかどうかを設定します。toString()このRobotの文字列表現を返します。void現在イベント・キューにあるすべてのイベントが処理されるまで待機します。
-
コンストラクタの詳細
-
Robot
public Robot() throws AWTExceptionプライマリ・スクリーンの座標システムでRobotオブジェクトを構築します。- スロー:
AWTException- プラットフォーム構成で低レベルの入力制御が許可されない場合。 この例外はGraphicsEnvironment.isHeadless()がtrueを返す場合に必ずスローされるSecurityException-createRobotアクセス権が許可されない場合- 関連項目:
-
Robot
public Robot(GraphicsDevice screen) throws AWTException 指定されたスクリーン・デバイスにRobotを作成します。 mouseMove、getPixelColor、createScreenCaptureなどのRobotメソッド・コールに渡される座標は、指定された画面と同じ座標系にあると解釈されます。 プラットフォーム構成によっては、複数スクリーンで次のことが行えます。- 同じ座標系を共有し、仮想スクリーンを結合する
- 異なる座標系を使用し、個々のスクリーンのように動作する
スクリーン・デバイスで座標系に影響がでるように再構成されている場合、既存のRobotオブジェクトの動作は保証されません。
- パラメータ:
screen- Robotが動作する座標系を示す、スクリーンGraphicsDevice。- スロー:
AWTException- プラットフォーム構成で低レベルの入力制御が許可されない場合。 この例外はGraphicsEnvironment.isHeadless()がtrueを返す場合に必ずスローされる。IllegalArgumentException-screenがスクリーンGraphicsDeviceではない場合。SecurityException-createRobotアクセス権が許可されない場合- 関連項目:
-
-
メソッドの詳細
-
mouseMove
public void mouseMove(int x, int y) 指定したスクリーン座標にマウス・ポインタを移動します。一部のプラットフォームではマウス・ポインタが視覚的に移動しない場合がありますが、後続のmousePressおよびmouseReleaseは正しいロケーションに配信できます
- パラメータ:
x- X位置y- Y位置
-
mousePress
public void mousePress(int buttons) 1つまたは複数のマウス・ボタンを押します。 マウス・ボタンを離すにはmouseRelease(int)メソッドを使用する必要があります。- パラメータ:
buttons- Buttonマスク。1つ以上のマウス・ボタン・マスクの組み合わせ。buttonsパラメータとして有効な値の組み合わせのみの使用が許可されます。 有効な組み合わせは、InputEvent.getMaskForButton(button)メソッドによって返されたInputEvent.BUTTON1_DOWN_MASK、InputEvent.BUTTON2_DOWN_MASK、InputEvent.BUTTON3_DOWN_MASK、および値で構成されます。 有効な組み合わせは、次のようにToolkit.areExtraMouseButtonsEnabled()値によっても異なります。- 拡張マウス・ボタンのサポートがJavaで
disabledにされている場合は、標準ボタン・マスクInputEvent.BUTTON1_DOWN_MASK、InputEvent.BUTTON2_DOWN_MASK、InputEvent.BUTTON3_DOWN_MASKのみを使用できます。 - 拡張マウス・ボタンのサポートがJavaで
enabledにされている場合は、標準ボタン・マスクを使用でき、マウスに4つ以上のボタンがあれば、存在する拡張マウス・ボタンのマスクを使用できます。 そのようにして、1からMouseInfo.getNumberOfButtons()までの範囲のボタンに対応するボタン・マスクの使用が許可されます。InputEvent.getMaskForButton(button)メソッドを使用して、任意のマウス・ボタンのマスクをその番号で取得することをお薦めします。
また、次の標準のボタン・マスクも受け入れられます。
InputEvent.BUTTON1_MASKInputEvent.BUTTON2_MASKInputEvent.BUTTON3_MASK
InputEvent.BUTTON1_DOWN_MASK、InputEvent.BUTTON2_DOWN_MASK、InputEvent.BUTTON3_DOWN_MASKを使用することをお薦めします。 拡張された_DOWN_MASKまたは古い_MASKのどちらかの値を使用するべきですが、これらの両方のモデルを混在させてはいけません。- 拡張マウス・ボタンのサポートがJavaで
- スロー:
IllegalArgumentException-buttonsマスクに追加のマウス・ボタンのマスクが含まれ、拡張されたマウス・ボタンのサポートがJavaによってdisabledになっている場合IllegalArgumentException-buttonsマスクに、マウス上に存在しない追加のマウス・ボタンのマスクが含まれ、拡張されたマウス・ボタンのサポートがJavaによってenabledになっている場合- 関連項目:
-
mouseRelease
public void mouseRelease(int buttons) 1つまたは複数のマウス・ボタンを離します。- パラメータ:
buttons- Buttonマスク。1つ以上のマウス・ボタン・マスクの組み合わせ。buttonsパラメータとして有効な値の組み合わせのみの使用が許可されます。 有効な組み合わせは、InputEvent.getMaskForButton(button)メソッドによって返されたInputEvent.BUTTON1_DOWN_MASK、InputEvent.BUTTON2_DOWN_MASK、InputEvent.BUTTON3_DOWN_MASK、および値で構成されます。 有効な組み合わせは、次のようにToolkit.areExtraMouseButtonsEnabled()値によっても異なります。- 拡張マウス・ボタンのサポートがJavaで
disabledにされている場合は、標準ボタン・マスクInputEvent.BUTTON1_DOWN_MASK、InputEvent.BUTTON2_DOWN_MASK、InputEvent.BUTTON3_DOWN_MASKのみを使用できます。 - 拡張マウス・ボタンのサポートがJavaで
enabledにされている場合は、標準ボタン・マスクを使用でき、マウスに4つ以上のボタンがあれば、存在する拡張マウス・ボタンのマスクを使用できます。 そのようにして、1からMouseInfo.getNumberOfButtons()までの範囲のボタンに対応するボタン・マスクの使用が許可されます。InputEvent.getMaskForButton(button)メソッドを使用して、任意のマウス・ボタンのマスクをその番号で取得することをお薦めします。
また、次の標準のボタン・マスクも受け入れられます。
InputEvent.BUTTON1_MASKInputEvent.BUTTON2_MASKInputEvent.BUTTON3_MASK
InputEvent.BUTTON1_DOWN_MASK、InputEvent.BUTTON2_DOWN_MASK、InputEvent.BUTTON3_DOWN_MASKを使用することをお薦めします。 拡張された_DOWN_MASKまたは古い_MASKのどちらかの値を使用するべきですが、これらの両方のモデルを混在させてはいけません。- 拡張マウス・ボタンのサポートがJavaで
- スロー:
IllegalArgumentException-buttonsマスクに追加のマウス・ボタンのマスクが含まれ、拡張されたマウス・ボタンのサポートがJavaによってdisabledになっている場合IllegalArgumentException-buttonsマスクに、マウス上に存在しない追加のマウス・ボタンのマスクが含まれ、拡張されたマウス・ボタンのサポートがJavaによってenabledになっている場合- 関連項目:
-
mouseWheel
public void mouseWheel(int wheelAmt) ホイール・マウスのホイール・スクロールを回転させます。- パラメータ:
wheelAmt- マウス・ホイールを移動する「ノッチ」の数。負の値はユーザーから見て上または離れる方向への移動を示し、正の値はユーザーから見て下または近づく方向への移動を示す。- 導入されたバージョン:
- 1.4
-
keyPress
public void keyPress(int keycode) 指定されたキーを押します。 キーを離すにはkeyReleaseメソッドを使用する必要があります。複数の物理的なキーが関連付けられているキー・コード(たとえば、
KeyEvent.VK_SHIFTは左または右のShiftキーを示す可能性がある)は、左のキーにマップされます。- パラメータ:
keycode- 押す対象のキー(KeyEvent.VK_Aなど)- スロー:
IllegalArgumentException-keycodeが有効なキーでない場合- 関連項目:
-
keyRelease
public void keyRelease(int keycode) 指定されたキーを離します。複数の物理的なキーが関連付けられているキー・コード(たとえば、
KeyEvent.VK_SHIFTは左または右のShiftキーを示す可能性がある)は、左のキーにマップされます。- パラメータ:
keycode- 離す対象のキー(KeyEvent.VK_Aなど)- スロー:
IllegalArgumentException-keycodeが有効なキーでない場合- 関連項目:
-
getPixelColor
public Color getPixelColor(int x, int y) 指定されたスクリーン座標でピクセルの色を返します。デスクトップ環境で画面コンテンツを取得するための権限を付与する必要があり、必要な権限が付与されていない場合、
SecurityExceptionがスローされるか、戻されたColorのコンテンツが未定義になります。- APIのノート:
- AWTイベント・ディスパッチ・スレッドでこのメソッドをコールすることは避けることをお薦めします。これは、特に権限の取得が必要で、ユーザーとの対話が必要な場合に、スクリーン・キャプチャが長い操作になる可能性があるためです。
- パラメータ:
x- ピクセルのX位置y- ピクセルのY位置- 戻り値:
- ピクセルの色
- スロー:
SecurityException-readDisplayPixelsアクセス権が付与されていない場合、またはデスクトップ環境によって画面へのアクセスが拒否された場合
-
createScreenCapture
public BufferedImage createScreenCapture(Rectangle screenRect) スクリーンから読み取るピクセルを含むイメージを作成します。デスクトップ環境で画面コンテンツを取得するための権限を付与する必要があり、必要な権限が付与されていない場合、
SecurityExceptionがスローされるか、または戻されたBufferedImageの内容が定義されていません。- APIのノート:
- AWTイベント・ディスパッチ・スレッドでこのメソッドをコールすることは避けることをお薦めします。これは、特に権限の取得が必要で、ユーザーとの対話が必要な場合に、スクリーン・キャプチャが長い操作になる可能性があるためです。
- パラメータ:
screenRect- スクリーン座標で取り込むRect- 戻り値:
- 取り込んだイメージ
- スロー:
IllegalArgumentException-screenRectの幅および高さが0以下の場合SecurityException-readDisplayPixelsアクセス権が付与されていない場合、またはデスクトップ環境によって画面へのアクセスが拒否された場合- 関連項目:
-
createMultiResolutionScreenCapture
public MultiResolutionImage createMultiResolutionScreenCapture(Rectangle screenRect) スクリーンから読み取るピクセルを含むイメージを作成します。 このメソッドは、ユーザー領域から画面(device)領域へのスケーリング変換がある場合に使用できます。 通常、これはディスプレイが高解像度の画面であることを意味しますが、厳密には、このような変換が存在する場合を意味します。MultiResolutionImageを返します。非スケール表示の場合、
MultiResolutionImageには1つのイメージ・バリアントがあります:- ユーザーが指定したサイズのベース・イメージ。
スケーリング変換がある高解像度表示の場合、
MultiResolutionImageには2つのイメージ・バリアントがあります:- ユーザーが指定したサイズのベース・イメージ。 これは画面からスケーリングされます。
- デバイス・サイズ・ピクセルによるネイティブ・デバイス解像度イメージ。
例:
Image nativeResImage; MultiResolutionImage mrImage = robot.createMultiResolutionScreenCapture(frame.getBounds()); List<Image> resolutionVariants = mrImage.getResolutionVariants(); if (resolutionVariants.size() > 1) { nativeResImage = resolutionVariants.get(1); } else { nativeResImage = resolutionVariants.get(0); }- パラメータ:
screenRect- スクリーン座標で取り込むRect- 戻り値:
- 取り込んだイメージ
- スロー:
IllegalArgumentException-screenRectの幅および高さが0以下の場合SecurityException-readDisplayPixelsアクセス権が付与されていない場合、またはデスクトップ環境によって画面へのアクセスが拒否された場合- 導入されたバージョン:
- 9
- 関連項目:
-
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がスリープする時間をミリ秒で設定します。- パラメータ:
ms- 遅延時間(ミリ秒単位)- スロー:
IllegalArgumentException-msが0から60,000ミリ秒の範囲にない場合
-
delay
public void delay(int ms) 指定時間スリープします。呼出し側スレッドが待機中に中断されると、割込みステータスが設定された状態ですぐに戻ります。 割り込みステータスがすでに設定されている場合、このメソッドは割り込みステータスが設定された状態でただちに復帰します。
- パラメータ:
ms- ミリ秒単位のスリープ時間- スロー:
IllegalArgumentException-msが0から60,000ミリ秒の間 (包含)にない場合
-
waitForIdle
public void waitForIdle()現在イベント・キューにあるすべてのイベントが処理されるまで待機します。- スロー:
IllegalThreadStateException- AWTイベント・ディスパッチ・スレッドに対して呼び出された場合
-
toString
public String toString()このRobotの文字列表現を返します。
-