GK Informatik |
Arbeitsblatt JAVA
14b: |
JST. 12/1 |
NAME: |
Wir zeichnen eine Freihandlinie, indem wir jedesmal, wenn die Maus bewegt wird, eine Strecke von der aktuellen Stiftposition bis zur neuen Mausposition zeichnen. Da die Ereignisse sehr oft ausgelöst werden, werden kurze, meist nur 1-2 Pixel lange Strecken gezeichnet, die dann auf dem Bildschirm ingesamt wie eine Freihandlinie aussehen.
Wir verwenden hierzu die Ereignismethode mouseDrag.
Die folgende Ereignismethode zeichnet daher eine Freihandlinie entlang des Mauszeigers:
public boolean mouseDrag(Event evt, int x, int y)
{
grGrafik.drawLine(xStart,yStart,x,y);
xStart=x;
yStart=y;
repaint();
return true;
}
Sie soll die Linie jedoch nicht immer zeichnen, sondern nur, wenn die linke Maustaste gedrückt ist.
public boolean mouseDrag(Event evt, int x, int y)
{
if (Mausgedrückt)
{
grGrafik.drawLine(xStart,yStart,x,y);
xStart=x;
yStart=y;
}
repaint();
return true;
}
Wir benötigen also einen Schalter vom Typ boolean Mausgedrückt, der den Wert true hat, solange die Maustaste gedrückt wird, und false, wenn die Maustaste noch nicht gedrückt ist oder losgelassen wurde.
Diesen definieren wir im Teil der Zustandsvariablen unserer Canvas-Klasse MiniPaintCanvas über
private boolean Mausgedrückt = false;
und initialisieren ihn gleich auf false.
Das Umschalten des Schalters geschieht in den Ereignismethoden mouseDown und mouseUp. Es ergeben sich die folgenden Ereignismethoden:
public boolean mouseDown(Event evt, int x, int y)
{
Mausgedrückt=true;
return true;
}
public boolean mouseUp(Event evt, int x, int y)
{
Mausgedrückt=false;
return true;
}
© Ralph-Erich Hildebrandt, Neuss / April 1999