2016-07-22 7 views
0

現在、私のアプリケーションでマウスクリックをシミュレートするには、JavaのRobotクラスを使用します。それは、画面上のどこにポイントがマップされているかを知るためにデスクトップを境界/グリッドとして使用するようです。実際のマウスがオーバーライドされていないJavaコンポーネントをマウスでクリックする方法

例:

Robot bot = new Robot(); 
bot.mouseMove(1099,22); //Manually collected point.. 
bot.delay(100); 
bot.mousePress(InputEvent.BUTTON1_MASK); 
bot.mouseRelease(InputEvent.BUTTON1_MASK); 

目標:このコードを実行する実行中

ロボットの力を使用する私のマウス/カーソル、私は自分のコンピュータ上で他のことを行うことができるようにしたいです私がプログラムしたJavaアプリケーションだけをクリックします。

JNAでこれを行う方法はありますか? Windows以外のオペレーティングシステムをサポートすることには関心がありませんが、従来の技術のためにJavaアプリケーションである必要があります。

答えて

1

次のコードはtargetを基準にして(x、y)のtargetコンポーネントをクリックします。

private static void click(Component target, int x, int y) 
{ 
    MouseEvent press, release, click; 
    Point point; 
    long time; 

    point = new Point(x, y); 

    SwingUtilities.convertPointToScreen(point, target); 

    time = System.currentTimeMillis(); 
    press = new MouseEvent(target, MouseEvent.MOUSE_PRESSED, time, 0, x, y, point.x, point.y, 1, false, MouseEvent.BUTTON1); 
    release = new MouseEvent(target, MouseEvent.MOUSE_RELEASED, time, 0, x, y, point.x, point.y, 1, false, MouseEvent.BUTTON1); 
    click = new MouseEvent(target, MouseEvent.MOUSE_CLICKED, time, 0, x, y, point.x, point.y, 1, false, MouseEvent.BUTTON1); 

    target.dispatchEvent(press); 
    target.dispatchEvent(release); 
    target.dispatchEvent(click); 
} 
+0

ニースコード。これはオペレーティングシステムのマウスではなくエミュレートされたマウスを使用していますか? –

+0

オペレーティングシステムはこのコードに関係していません。このコードは、ユーザーが実際の物理マウスをクリックした場合と同じイベントをエミュレートします。言い換えれば、Javaプログラムは、上記のコードと実際の物理マウスとの違いを簡単には分かりません。 – Nathan

関連する問題