Im Einzelnen ist das hier so realisiert, dass im Konstruktor des von JFrame abgeleiteten Beispiels ein JPanel deklariert und hinzugefügt wird. Das Panel wird hier als anonyme Klasse realisiert. Wie erwähnt wird ihre Methode paintComponent(Graphics g) überschrieben. Dort kommen im Wesentlichen drei Methoden des Graphics-Objektes zum Einsatz:
- setColor() bestimmt die Farbe der Zeichnung. Hier nur eingesetzt, um die Teilabschnitte besser zu kennzeichnen.
- drawLine() zeichnet eine Gerade zwischen zwei Punkten, die durch ihre x- und y-Koordinaten definiert werden.
- drawArc() zeichnet ein Kreis-/Ellipsensegment. Die Parameter
dieser Methode umfassen von links nach rechts die folgenden Werte:
- Abstand der vollständigen Ellipse vom linken Panelrand
- Abstand der vollständigen Ellipse vom oberen Panelrand
- horizontaler Durchmesser der Ellipse
- vertikaler Durchmesser der Ellipse
- Anfangspunkt des Ellipsensegmentes (0 = 3 Uhr)
- Ellipsensegment in Grad (positiv = gegen den Uhrzeigersinn)
import java.awt.Color;
import java.awt.Graphics;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class BogenZeichnen extends JFrame {
JPanel panel;
public BogenZeichnen() {
panel = new JPanel() {
public void paintComponent(Graphics g) {
g.setColor(Color.WHITE);
g.fillRect(0, 0, this.getWidth(), this.getHeight());
g.setColor(Color.RED);
g.drawLine(100,10,100,100);
g.setColor(Color.GREEN);
g.drawArc(100, 75, 50, 50, 180, 90);
g.setColor(Color.BLUE);
g.drawArc(100, 125, 50, 50, 90, -180);
g.setColor(Color.BLACK);
g.drawArc(115, 175, 20, 20, 90, 180);
g.drawArc(120, 195, 10, 10, 90, -180);
}
};
add(panel);
this.setSize(300, 300);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setVisible(true);
}
public static void main(String[] args) {
new BogenZeichnen();
}
}
Die Klasse erzeugt die folgende Ausgabe:
import java.awt.Graphics;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class BogenZeichnen extends JFrame {
JPanel panel;
public BogenZeichnen() {
panel = new JPanel() {
public void paintComponent(Graphics g) {
g.setColor(Color.WHITE);
g.fillRect(0, 0, this.getWidth(), this.getHeight());
g.setColor(Color.RED);
g.drawLine(100,10,100,100);
g.setColor(Color.GREEN);
g.drawArc(100, 75, 50, 50, 180, 90);
g.setColor(Color.BLUE);
g.drawArc(100, 125, 50, 50, 90, -180);
g.setColor(Color.BLACK);
g.drawArc(115, 175, 20, 20, 90, 180);
g.drawArc(120, 195, 10, 10, 90, -180);
}
};
add(panel);
this.setSize(300, 300);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setVisible(true);
}
public static void main(String[] args) {
new BogenZeichnen();
}
}