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