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());
Search WWH ::




Custom Search