Java Reference
In-Depth Information
Zuletzt wird die vom Anwender gewählte Figur der
ArrayList
mit der
add
-Methode hin-
zugefügt und mit
repaint
ein Neuzeichnen der Zeichenfläche ausgelöst. Das Zurückset-
zen der Booleschen Variablen
zeichnen
verhindert, dass bei einem folgenden Mausklick
(ohne Ziehen) das Loslassen der Maustaste einen neuen Zeichenvorgang auslöst.
private void jPanelZeichenflaecheMouseDragged(MouseEvent evt) {
xabs = evt.getX();
yabs = evt.getY();
x2 = evt.getX() - x1;
y2 = evt.getY() - y1;
jPanelZeichenflaeche.repaint();
Graphics2D g2d = (Graphics2D) jPanelZeichenflaeche.getGraphics();
g2d.setColor(Color.black);
BasicStroke stil = new BasicStroke(
0.5f, BasicStroke.CAP_BUTT,
BasicStroke.JOIN_MITER);
g2d.setStroke(stil);
Rectangle2D.Float rechteck = new Rectangle2D.Float(x1, y1, x2, y2);
g2d.draw(rechteck);
if (Figur=='L') {
jTFPositionx2.setText(new Integer(xabs).toString());
jTFPositiony2.setText(new Integer(yabs).toString());
}else{
jTFPositionx2.setText(new Integer(x2).toString());
jTFPositiony2.setText(new Integer(y2).toString());
13
}
zeichnen = true;
}
Listing 13.16
Reaktion auf das Ereignis »mouseDragged«
Die Methode bestimmt zunächst wieder die absoluten Koordinaten der aktuellen Maus-
position und berechnet Breite und Höhe des aufgezogenen Rechtecks.
Um einen Eindruck über die Größe des aufgezogenen Rechtecks zu vermitteln, wird auf
der Zeichenfläche ein Rechteck gezeichnet, das aber nicht an die Methode
paintCompo-
nent
übermittelt wird. Damit beim Aufziehen des Rechtecks keine ausgefüllte schwarze
Fläche entsteht, wird bei jedem Auftreten von
mouseDragged
die Methode
repaint
des
Panels aufgerufen. Sie löscht gewissermaßen das zuvor gezeichnete Rechteck, bevor ein
Neues gezeichnet wird.