Obtenir la position de la souris

Je voudrais simuler un mouvement naturel de la souris en Java (allant d’ici à là pixel par pixel). Pour ce faire, j’ai besoin de connaître les coordonnées de départ.

J’ai trouvé la méthode event.getX () et event.getY () mais j’ai besoin d’un événement …

Comment puis-je connaître les positions sans rien faire (ou quelque chose qui n’est pas visible)?

Je vous remercie

MouseInfo.getPointerInfo (). GetLocation () peut être utile. Il renvoie un object Point correspondant à la position actuelle de la souris.

 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); 

Dans SWT, vous n’avez pas besoin d’être à l’écoute pour vous rendre à l’emplacement de la souris. L’object Display a la méthode getCursorLocation() .

Dans vanilla SWT / JFace, appelez Display.getCurrent().getCursorLocation() .

Dans une application RCP, appelez PlatformUI.getWorkbench().getDisplay().getCursorLocation() .

Pour les applications SWT, il est préférable d’utiliser getCursorLocation() sur MouseInfo.getPointerInfo() que d’autres ont mentionné, car ce dernier est implémenté dans la boîte à outils AWT que SWT a été conçue pour remplacer.

 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(Ssortingng[] 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(Ssortingng[] 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 } } } 

Si vous utilisez Swing comme couche d’interface utilisateur, vous pouvez utiliser un écouteur Mouse-Motion pour cela.

Essayez de regarder la classe java.awt.Robot. Il vous permet de déplacer la souris par programmation.

Si vous utilisez SWT, vous pouvez envisager d’append un MouseMoveListener comme expliqué ici .

Dans mon scénario, je devais ouvrir une boîte de dialog en position de la souris basée sur une opération d’interface graphique réalisée avec la souris. Le code suivant a fonctionné pour moi:

  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; } 

Je fais quelque chose comme ça pour obtenir les coordonnées de la souris en utilisant Robot, j’utilise ces coordonnées plus loin dans quelques-uns des jeux que je développe:

 public class ForMouseOnly { public static void main(Ssortingng[] 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; } } } }