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
MouseInfo.getPointerInfo (). GetLocation () pourrait être utile. Il retourne un objet 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 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.
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
}
}
}
Essayez de regarder la classe Java.awt.Robot. Il vous permet de déplacer la souris par programmation.
Si vous utilisez Swing en tant que couche de l'interface utilisateur, vous pouvez utiliser un écouteur de mouvement de souris pour cela.
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;
}
}
}
}
Si vous utilisez SWT, vous voudrez peut-être ajouter un MouseMoveListener comme expliqué ici .
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;
}