web-dev-qa-db-ja.com

マウスの位置を取得

Javaでの自然なマウスの動きをシミュレートしたいと思います(ここからピクセルごとに行きます)。そのためには、開始座標を知る必要があります。

メソッドevent.getX()およびevent.getY()を見つけましたが、イベントが必要です...

何もせずに(または見えない何か)位置を知るにはどうすればよいですか?

ありがとうございました

98
Martin Trigaux

MouseInfo.getPointerInfo()。getLocation() が役立つ場合があります。現在のマウス位置に対応する Point オブジェクトを返します。

192
vpram86
PointerInfo a = MouseInfo.getPointerInfo();
Point b = a.getLocation();
int x = (int) b.getX();
int y = (int) b.getY();
System.out.print(y + "jjjjjjjjj");
System.out.print(x);
Robot r = new Robot();
r.mouseMove(x, y - 50);
36
Nauman Khalid

SWTでは、マウスの位置に到達するためにリスナーにいる必要はありません。 DisplayオブジェクトにはgetCursorLocation()メソッドがあります。

Vanilla SWT/JFaceで、Display.getCurrent().getCursorLocation()を呼び出します。

RCPアプリケーションで、PlatformUI.getWorkbench().getDisplay().getCursorLocation()を呼び出します。

SWTアプリケーションの場合、SWTが置き換えるように設計されたAWTツールキットに実装されているため、他の人が言及したgetCursorLocation()よりもMouseInfo.getPointerInfo()を使用することが望ましいです。

10
stevorino
import Java.awt.MouseInfo;
import Java.awt.GridLayout;
import Java.awt.Color;
import Java.awt.Dimension;
import Java.awt.event.MouseListener;
import Java.awt.event.MouseEvent;

import javax.swing.*;

public class MyClass {
  public static void main(String[] args) throws InterruptedException{
    while(true){
      //Thread.sleep(100);
      System.out.println("(" + MouseInfo.getPointerInfo().getLocation().x + 
              ", " + 
              MouseInfo.getPointerInfo().getLocation().y + ")");
    }
  }
}
7
Srb
import Java.awt.MouseInfo;
import Java.util.concurrent.TimeUnit;

public class Cords {

    public static void main(String[] args) throws InterruptedException {

        //get cords of mouse code, outputs to console every 1/2 second
        //make sure to import and include the "throws in the main method"

        while(true == true)
        {
        TimeUnit.SECONDS.sleep(1/2);
        double mouseX = MouseInfo.getPointerInfo().getLocation().getX();
        double mouseY = MouseInfo.getPointerInfo().getLocation().getY();
        System.out.println("X:" + mouseX);
        System.out.println("Y:" + mouseY);
        //make sure to import 
        }

    }

}
6
Josh McQuinn

Java.awt.Robotクラスを見てみてください。プログラムでマウスを動かすことができます。

4
Jeff Storey

UIレイヤーとしてSwingを使用している場合は、これに Mouse-Motion Listener を使用できます。

2
Andrzej Doyle

私はロボットを使用してマウス座標を取得するためにこのようなことをしています、私は開発しているいくつかのゲームでこれらの座標をさらに使用します:

public class ForMouseOnly {
    public static void main(String[] args) throws InterruptedException {
        int x = MouseInfo.getPointerInfo().getLocation().x;
        int y = MouseInfo.getPointerInfo().getLocation().y;
        while (true) {

            if (x != MouseInfo.getPointerInfo().getLocation().x || y != MouseInfo.getPointerInfo().getLocation().y) {
                System.out.println("(" + MouseInfo.getPointerInfo().getLocation().x + ", "
                        + MouseInfo.getPointerInfo().getLocation().y + ")");
                x = MouseInfo.getPointerInfo().getLocation().x;
                y = MouseInfo.getPointerInfo().getLocation().y;
            }
        }
    }
}
1
Varun Ved

SWTを使用している場合、 here の説明に従って、MouseMoveListenerを追加することを検討してください。

0
Topher Fangio

私のシナリオでは、マウスで行われたGUI操作に基づいて、マウスの位置でダイアログボックスを開くことになっていた。次のコードは私のために働いた:

    public Object open() {
    //create the contents of the dialog
    createContents();
    //setting the Shell location based on the curent position
    //of the mouse
    PointerInfo a = MouseInfo.getPointerInfo();
    Point pt = a.getLocation();
    shellEO.setLocation (pt.x, pt.y);

    //once the contents are created and location is set-
    //open the dialog
    shellEO.open();
    shellEO.layout();
    Display display = getParent().getDisplay();
    while (!shellEO.isDisposed()) {
        if (!display.readAndDispatch()) {
            display.sleep();
        }
    }
    return result;
}
0
bullzeye