Java Mausbewegung irgendwo auf dem Bildschirm

8

Ich bin mir sicher, dass das möglich ist, aber all meine Suche ist leer.

In Java ist es möglich, sich für ein Mausbewegungsereignis außerhalb einer Java-App zu registrieren? Wenn sich der Mauszeiger irgendwo auf dem Bildschirm bewegt, erhalte ich einen Rückruf. Eine Annäherung ist möglich mit dem Aufruf von MouseInfo.getPointerInfo , aber es muss einen besseren Weg geben.

Danke

Um den Anwendungsfall zu erklären: Es ist nur für ein Haustier-Projekt, aber im Grunde feuern Ereignisse, wenn die Maus den Rand des Bildschirms trifft. Ich dachte auch, dass verschiedene Ereignisse ausgelöst werden könnten, wenn Sie versuchen, den Bildschirmrand zu drücken . Und dafür dachte ich, ein Maus-Motion-Listener wäre besser geeignet.

    
Dave 18.03.2010, 11:49
quelle

1 Antwort

11

java.awt.event.MouseMotionListener gibt Ihnen nur Informationen über Mausbewegungen innerhalb Ihres Anwendungsfensters. Für Ereignisse außerhalb dieses Fensters gibt es keinen Weg um MouseInfo.getPointerInfo . Sie könnten jedoch eine (möglicherweise singleton) Klasse schreiben, die die Zeigerinformationen in regelmäßigen Intervallen abfragt und MouseMotionListeners hinzufügen lässt:

%Vor%

Beachten Sie jedoch, dass es einige bemerkenswerte Unterschiede zu Ihrem standardmäßigen MouseMotionListener gibt:

  • Sie erhalten nur mouseMoved -Ereignisse, niemals mouseDragged -Ereignisse. Der Grund dafür ist, dass es keine Möglichkeit gibt, Informationen zu Klicks außerhalb des Hauptfensters zu erhalten.
  • Aus ähnlichen Gründen ist modifiers jedes MouseEvent immer 0.
  • Gleiches gilt für die Werte clickCount , popupTrigger , button
  • Sie müssen einen Dummy java.awt.Component angeben, der als (falsche) Quelle der MouseEvent s verwendet wird - null Werte sind hier nicht erlaubt.
Thomas 18.03.2010, 14:20
quelle

Tags und Links