私はJavaで自然なマウスの動きをシミュレートしたいと思います。これを行うには、開始座標を知る必要があります。 ...マウスの位置を取得
は、私は方法event.getX()とevent.getYを(見つけた)が、私は、イベントを必要とする
どのように私は何も(あるいは見えない何かを)やっずに位置を知ることができますか?
はあなたのUI層としてスイングを使用している場合、あなたはこのためMouse-Motion Listenerを使用することができますあなたの
私はJavaで自然なマウスの動きをシミュレートしたいと思います。これを行うには、開始座標を知る必要があります。 ...マウスの位置を取得
は、私は方法event.getX()とevent.getYを(見つけた)が、私は、イベントを必要とする
どのように私は何も(あるいは見えない何かを)やっずに位置を知ることができますか?
はあなたのUI層としてスイングを使用している場合、あなたはこのためMouse-Motion Listenerを使用することができますあなたの
MouseInfo.getPointerInfo().getLocation()が役に立ちます。現在のマウス位置に対応するPointオブジェクトを返します。
ありがとうございます。
java.awt.Robotクラスを見てみましょう。マウスをプログラム的に動かすことができます。
あなたはSWTを使用している場合は、hereが説明したようにMouseMoveListenerを追加することで、見たいと思うかもしれません。
リスナーはマウスで何か(移動、クリック)した場合にのみ実行されます。私がそれを動かす前に最初に必要なことは、開始位置を知ることです –
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);
次回にいくつかのコメントを追加してください。 – CSchulz
SWTでは、マウスの位置を取得するためにリスナーにいる必要はありません。 DisplayオブジェクトのメソッドはgetCursorLocation()
です。バニラSWT/JFaceので
、Display.getCurrent().getCursorLocation()
を呼び出します。 RCPアプリケーションで
、PlatformUI.getWorkbench().getDisplay().getCursorLocation()
を呼び出します。
SWTアプリケーションでは、よりもgetCursorLocation()
を使用することをお勧めします。後者は、SWTが置き換えるように設計されたAWTツールキットで実装されているためです。
私のシナリオでは、マウスで行われた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;
}
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 + ")");
}
}
}
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
}
}
}
私はマウスがロボットを使用して座標取得するには、このような何かをやっている、私は私が開発していたゲームの数でさらにこれらの座標を使用します。
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;
}
}
}
}
'getPointerInfo()。getLocation()'は、画面を基準にした相対位置を返します。コンポーネントに相対的な位置(MouseListenersから与えられるような)を望むなら、 'yourComponent.getLocationOnScreen()'をそれから引くことができます。 –
+1 'Container.getMousePosition()'は、マウスがあまりにも速く動いている場合には、nullを返すことがあります。 –
マウスは@ThomasAhleあなたはすでに実装な便利メソッド使用して、それを自分で実装する避けることができ、言ったことに加えて、自然な画面 – Srb