web-dev-qa-db-fra.com

Obtenir la position de la souris

Je voudrais simuler un mouvement naturel de la souris dans Java (en allant d’ici en 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 d'invisible)?

Je vous remercie

98
Martin Trigaux

MouseInfo.getPointerInfo (). GetLocation () pourrait être utile. Il retourne un objet Point correspondant à la position actuelle de la souris.

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

Dans SWT, vous n'avez pas besoin d'être dans un auditeur pour accéder à l'emplacement de la souris. L'objet Affichage 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() par rapport à MouseInfo.getPointerInfo() déjà mentionné, car ce dernier est implémenté dans le toolkit AWT que SWT a été conçu pour remplacer.

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

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

4
Jeff Storey

Si vous utilisez Swing en tant que couche de l'interface utilisateur, vous pouvez utiliser un écouteur de mouvement de souris pour cela.

2
Andrzej Doyle

Je fais quelque chose comme ceci 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(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

Si vous utilisez SWT, vous voudrez peut-être ajouter un MouseMoveListener comme expliqué ici .

0
Topher Fangio

Dans mon scénario, je devais ouvrir une boîte de dialogue à la position de la souris en fonction d'une opération d'interface graphique effectuée à l'aide de 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;
}
0
bullzeye