Java Reference
In-Depth Information
Line2D.Float linie=new Line2D.Float(
zo.getX1(),zo.getY1(),zo.getX2(),zo.getY2());
g2d.draw(linie);
break;
}
}
}
Listing 13.10
Überschriebene paintComponent-Methode
Nach dem Aufruf der geerbten Methode wird ein
Graphics2D
-Kontext erstellt. Damit
stehen für das Zeichnen Erweiterungen wie unterschiedliche Strichstärken für Pro-
grammerweiterungen zur Verfügung. In der anschließenden
for
-Schleife werden nach-
einander alle Einträge aus dem Behälter geholt, dem lokal definierten Zeichenobjekt
zo
zugewiesen und abgearbeitet. Der Ablauf innerhalb der
for
-Schleife entspricht weitge-
hend dem Ablauf, der bisher im Zeichenprogramm angesiedelt war. Die Angaben wer-
den hier aber nicht mehr aus den Komponenten, die dem Anwender zur Eingabe zur
Verfügung stehen, sondern aus den im Behälter gespeicherten Eigenschaftswerten der
Zeichenobjekte entnommen.
13
Die ersten Anweisungen ermitteln die Zeichenfarbe und die Strichstärke von
zo
und
übernehmen sie in den
Graphics2D
-Kontext als aktuelle Farbe und aktuellen Linienstil.
Abhängig vom Typ der geometrischen Figur werden dann
Rectangle2D
,
Ellipse2D
oder
Line2D
-Objekte erstellt und mit den Methoden
draw
bzw.
fill
auf das Panel gezeichnet.
Als Basis für das Zeichenprogramm können Sie den Quellcode von
Zeichnen2
oder
Zeichnen3
verwenden. Es sind insgesamt nur sehr geringe Änderungen erforderlich.
Ändern Sie zuerst bei den Eigenschaften den Typ des
jPanelZeichenflaeche
vom Stan-
dard-Panel
JPanel
in
JMyPaintPanel
, damit das soeben abgeleitete Panel auch verwendet
wird. In der
initGUI
müssen Sie den Konstruktoraufruf für das
JPanel
ebenfalls in
JMyPaintPanel
ändern. Verwenden Sie einfach unter Edit die Funktion Find/Replace,
und lassen Sie überall
JPanel
durch
JMyPaintPanel
ersetzen. Die weiteren Änderungen
beziehen sich alle auf die bei dem Button
jBtnZeichnen
hinterlegte Methode.
private void jBtnZeichnenActionPerformed(ActionEvent evt) {
try {
x1 = Integer.parseInt(jTFPositionx1.getText());
y1 = Integer.parseInt(jTFPositiony1.getText());
x2 = Integer.parseInt(jTFPositionx2.getText());
y2 = Integer.parseInt(jTFPositiony2.getText());