Ich möchte eine natürliche Mausbewegung in Java simulieren (Pixel für Pixel von hier nach dort). Dazu muss ich die Startkoordinaten kennen.
Ich habe die Methoden event.getX () und event.getY () gefunden, aber ich brauche ein Ereignis ...
Wie kann ich die Positionen kennen, ohne etwas zu tun (oder etwas, das nicht sichtbar ist)?
Danke dir
getPointerInfo().getLocation()
Gibt die Position relativ zum Bildschirm zurück. Wenn Sie die Position relativ zu Ihrer Komponente (wie von MouseListeners angegeben) möchten, können Sie davon subtrahierenyourComponent.getLocationOnScreen()
.Container.getMousePosition()
kann manchmal zurückkehren,null
wenn sich die Maus zu schnell bewegt. Dadurch wird das Problem vermieden.SwingUtilities.convertPointFromScreen(MouseInfo.getPointerInfo().getLocation(), component)
MouseInfo.getPointerInfo()
kann null zurückgeben, wenn keine Maus vorhanden ist oder in einigen Multimon-Setups.SwingUtilities.convertPointFromScreen(..)
das erste Argument direkt konvertiert wird und nichts zurückgibt. Daher muss es im Vergleich zum Kommentar @AndreiVajnaII etwas anders geschrieben werden, damit wir dasPoint
Objekt erreichen können.quelle
In SWT müssen Sie sich nicht in einem Listener befinden, um an die Mausposition zu gelangen. Das Anzeigeobjekt hat die Methode
getCursorLocation()
.Rufen Sie in Vanilla SWT / JFace an
Display.getCurrent().getCursorLocation()
.Rufen Sie in einer RCP-Anwendung auf
PlatformUI.getWorkbench().getDisplay().getCursorLocation()
.Für SWT-Anwendungen ist es vorzuziehen,
getCursorLocation()
die vonMouseInfo.getPointerInfo()
anderen erwähnten zu verwenden, da letztere in dem AWT-Toolkit implementiert sind, das SWT ersetzen soll.quelle
quelle
quelle
Schauen Sie sich die Klasse java.awt.Robot an. Sie können die Maus programmgesteuert bewegen.
quelle
Wenn Sie Swing als UI-Ebene verwenden, können Sie hierfür einen Mouse-Motion-Listener verwenden .
quelle
Ich mache so etwas, um Mauskoordinaten mit Robot zu erhalten. Ich verwende diese Koordinaten in einigen der Spiele, die ich entwickle, weiter:
quelle
Wenn Sie SWT verwenden, sollten Sie einen MouseMoveListener hinzufügen, wie hier erläutert .
quelle
In meinem Szenario sollte ich ein Dialogfeld an der Mausposition öffnen, basierend auf einer mit der Maus ausgeführten GUI-Operation. Der folgende Code hat bei mir funktioniert:
quelle