Inhaltsverzeichnis

Maussteuerung

Es gibt grundsätzlich zwei Ansätze, um auf Mausereignisse zu reagieren:

a) Reaktion auf Mausereignisse durch Überschreiben von Ereignishandlern eines grafischen Objekts

Jedes graphische Objekt hat die Methoden

  • onMouseEnter(double x, double y) (wird aufgerufen, wenn sich der Mauszeiger in das Objekt hineinbewegt)
  • onMouseLeave(double x, double y) (wird aufgerufen, wenn sich der Mauszeiger aus dem Objekt hinausbewegt)
  • onMouseDown(double x, double y, int key) (wird aufgerufen, wenn sich der Mauszeiger über dem Objekt befindet und eine der Maustasten gedrückt wurde)
  • onMouseUp(double x, double y, int key) (wird aufgerufen, wenn sich der Mauszeiger über dem Objekt befindet und eine der Maustasten losgelassen wurde)
  • onMouseMove(double x, double y) (wird aufgerufen, wenn sich der Mauszeiger über dem Objekt befindet und bewegt)

Diese Methoden kann man in einer Unterklasse überschreiben und so auf die entsprechenden Ereignisse reagieren.

Tipps:

  • Die Parameter x und y der Ereignishandler sind die Koordinaten des Mauszeigers zum Zeitpunkt des Ereignisses

  • key == 0 bedeutet linke Maustaste, key == 1 bedeutet mittlere Maustaste und key == 2 bedeutet rechte Maustaste.

  • Die Methode startTrackingEveryMouseMovement bewirkt, dass fortan jedes Mausereignis zum Aufruf des entsprechenden Ereignishandlers beim Objekt führt, auch wenn sich der Mauszeiger außerhalb des Objekts befindet.

  • Die Methode stopTrackingEveryMouseMovement beschränkt die Mausereignisse wieder auf diejenigen innerhalb des Objekts.

Beispiel 1: Verschieben von Rechtecken mit der Maus

Starte das Programm und verschiebe die Rechtecke mit der Maus!

b) Registrieren eines MouseListeners beim World-Objekt

Das Interface MouseListener besitzt Methoden

  • void onMouseDown(double x, double y, int button) (wird aufgerufen, wenn eine Maustaste nach unten gedrückt wird)
  • void onMouseUp(double x, double y, int button) (wird aufgerufen, wenn eine Maustaste losgelassen wird)
  • void onMouseMove(double x, double y) (wird aufgerufen, wenn der Mauszeiger sich bewegt)
  • void onMouseEnter(double x, double y) (wird aufgerufen, wenn der Mauszeiger sich in den Grafikbereich hineinbewegt)
  • void onMouseLeave(double x, double y) (wird aufgerufen, wenn der Mauszeiger sich aus dem Grafikbereich hinausbewegt)

Dabei bedeutet button == 1: linke Maustaste, button == 2: mittlere Maustaste und button == 3: rechte Maustaste.

Wird das Objekt einer Klasse, die MouseListener implementiert, beim World-Objekt mittels seiner Methode addMouseListener registriert, so werden die obigen Methoden aufgerufen, wenn die jeweiligen Mausereignisse auf dem Grafikbereich auftreten.

Beispiel 2: Mauszeigerspur

Starte das Programm und fahre mit der Maus über den Grafikausgabebereich! Probiere auch die linke Maustaste aus.