心霊現象? Robotを使ってマウスカーソルを操るJavaTips 〜Javaプログラミング編

» 2007年03月27日 10時00分 公開
[平野正喜@IT]

 java.awt.Robotクラスを用いると、テストの自動化自動実行のデモ、およびマウスやキーボード制御が必要なアプリケーションのために、ネイティブなシステム入力イベントを生成できます。

 このクラスの主な目的は、Javaプラットフォーム実装テストの自動化ですが、mouseMoveメソッドを用いてマウスのカーソルを自由に操れることは、利用者が操作しやすいアプリの作成に役立ちます。

 使い方は簡単で、Robotクラスのインスタンスを生成し(このとき、例外(AWTException)の対処が必要です)、mouseMoveメソッドに移動先の座標を指定するだけです。

 例えば、ウィンドウを持たないJavaアプリケーションから、マウスカーソルを単純に操るデモプログラムは下記のようになります。

図1 マウスカーソルを単純に操るデモプログラム 図1 マウスカーソルを単純に操るデモプログラム

 このプログラムを実行すると、マウスカーソルが強制的に画面左上に移動し、ゆっくりと右下に向かって移動します。

利用者の操作を先回りするウィンドウアプリケーション

 このmouseMoveメソッドを用いて、起動と同時にユーザーに行ってほしい操作がしやすいように、マウスカーソルを先回りさせるウィンドウアプリケーションを考えてみます。

 一例として、メモ帳のような機能を想定して、起動後すぐの操作は「メニューバーの左端のメニューをクリック」することとします。ウィンドウの左上隅からメニューバーの左端までの距離は、フレームとメニューバーのインセットを用いて得ます。この動作のみを確認するプログラムは下記のようになります。

図2 起動するとメニューバーの左端にマウスカーソルが移動するプログラム 図2 起動するとメニューバーの左端にマウスカーソルが移動するプログラム

 このプログラムを実行すると、マウスカーソルがメニューバーの左端に移動し、ユーザーはそのままクリックするだけでメニューを開けます。

図3 上記のプログラムの実行結果 図3 上記のプログラムの実行結果

複数のプラットフォームに対応させる場合の注意点

 なお、Robotクラスがjava.awtパッケージにあることから分かるように、このクラスのメソッドは、動作するプラットフォーム(OS、ウィンドウマネージャなど)の影響を受けやすい傾向があります。

 複数のプラットフォームに対応するアプリケーションの場合は、事前に入念なテストを行い、対応するプラットフォームを明記するなどの対処をお勧めします。

Profile

RunDog.org

平野正喜


Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。