web-dev-qa-db-ja.com

Javaでマウスの位置を設定するにはどうすればよいですか?

私はJavaでSwingGUIの作業を行っていますが、私の質問はかなり簡単だと思います。マウスの位置をどのように設定しますか?

19
dreadwail

使用する必要があります ロボット

このクラスは、テストの自動化、自己実行デモ、およびマウスとキーボードの制御が必要なその他のアプリケーションの目的で、ネイティブシステム入力イベントを生成するために使用されます。 Robotの主な目的は、Javaプラットフォーム実装の自動テストを容易にすることです。

クラスを使用して入力イベントを生成することは、イベントがプラットフォームのネイティブ入力キューで生成されるという点で、AWTイベントキューまたはAWTコンポーネントへのイベントの投稿とは異なります。例えば、 Robot.mouseMoveは、マウス移動イベントを生成するだけでなく、実際にマウスカーソルを移動します。

20
Matt

他の人が言っているように、これは Robot.mouseMove(x,y) を使用して達成できます。ただし、特に指定しない限り、ロボットはプライマリ画面の座標系で動作するため、マルチモニターの状況で作業する場合、このソリューションには欠点があります。

これは、ポイントベースのグローバル画面座標を渡すことができるソリューションです。

public void moveMouse(Point p) {
    GraphicsEnvironment ge = 
        GraphicsEnvironment.getLocalGraphicsEnvironment();
    GraphicsDevice[] gs = ge.getScreenDevices();

    // Search the devices for the one that draws the specified point.
    for (GraphicsDevice device: gs) { 
        GraphicsConfiguration[] configurations =
            device.getConfigurations();
        for (GraphicsConfiguration config: configurations) {
            Rectangle bounds = config.getBounds();
            if(bounds.contains(p)) {
                // Set point to screen coordinates.
                Point b = bounds.getLocation(); 
                Point s = new Point(p.x - b.x, p.y - b.y);

                try {
                    Robot r = new Robot(device);
                    r.mouseMove(s.x, s.y);
                } catch (AWTException e) {
                    e.printStackTrace();
                }

                return;
            }
        }
    }
    // Couldn't move to the point, it may be off screen.
    return;
}
21
Daniel
7
OscarRyz
4
SamSol

Robot クラスをチェックしてください。

2
camickr

コード自体は次のとおりです。

char escCode = 0x1B;
System.out.print(String.format("%c[%d;%df",escCode,row,column));

このコードはそれ自体では不完全なので、メソッドに配置して「positionCursor(int row、intcolumn)」のように呼び出すことをお勧めします。

完全なコード(メソッドとコード)は次のとおりです。

void positionCursor(int row, int column) {
        char escCode = 0x1B;
        System.out.print(String.format("%c[%d;%df",escCode,row,column));
}
0
noob_Coder