Konrad-Adenauer-Gymnasium Langenfeld

Informatik Grundkurs Einführungsphase

Der MouseMotionListener in der Canvas-Klasse

In ähnlicher Art und Weise wird nun auch der MouseMotionListener minipaint1MouseMotionListener als Ableitung der Klasse MouseMotionAdapter definiert. Er enthält die Maus-Methode mouseDragged, die auf Bewegen der Maus mit gedrückter Maustaste reagiert.

Das ist nur im Modus des Freihandzeichnens erforderlich. Daher erfolgt eine Abfrage, ob der modus den Wert 5 annimmt. Vorher wird wieder die aktuelle Mausposition in den Werten x und y abgelegt. Ist der Freihand-Modus eingestellt, dann wird von der Klickposition, die in xStart und yStart gespeichert war, zur aktuellen Mausposition (x | y) eine Linie gezogen. Anschließend werden die Werte von xStart und yStart mit x und y neu gesetzt, so dass sie für die nächste Linie wieder der Ausgangspunkt sind. Dadurch wird der Pseudo-Freihand-Modus erreicht. Zum Schluss folgt natürlich noch repaint().

Insgesamt sieht die Klasse dann folgendermaßen aus:
class minipaint1MouseMotionListener extends MouseMotionAdapter
{
  public void mouseDragged(MouseEvent event)
  {
    int x = event.getX();
    int y = event.getY();
    if (modus==5)
    {
      if (x!=xStart && y!=yStart)
      {
        grGrafik.drawLine(xStart,yStart,x,y);
        xStart=x;
        yStart=y;
      }
    }
    repaint();
  }
}

Die zweite IF-Abfrage dient dazu, dass der Fall abgefangen wird, das die Anfangs- und Endposition identisch ist.

!= bedeutet ungleich und && verknüpft die beiden Bedingungen mit der logischen UND-Verknüpfung. Weitere Informationen zu logischen Verknüpfungen enthält der Exkurs 2.


© Ralph-Erich Hildebrandt, 22. Februar 2004