Olympische Flagge – Grafikprogrammierung Tutorial
Wer kennt sie nicht, die Olympischen Spiele. Alle vier Jahre treffen sich die Hochleistungssportler um sich einander zu messen. Wie schön wäre es doch, die Olympische Flagge einmal in Java zu “malen”. Wie das geht, wird jetzt gezeigt.
- Neues Projekt erstellen: de.michel.graphic.olympia
- Paket erstellen: olympia
- Kreis.java erstellen
- Rechteck.java erstellen
- Text.java erstellen
- Olympia.java erstellen
- OlympiaFlagge.java erstellen
Quellcode
Zum Erstellen der Olympischen Flagge benötigen wir in erster Linie die Kreise. Um das ganze etwas aufwändiger zu gestalten wird zusätzlich ein Rahmen um die Flagge gezogen. Ein Bezeichner darf natürlich auch nicht fehlen.
Kreis.java
Fünf Ringe werden benötigt, aber nur eine Klasse. Die Funktion drawOval() zeichnet die Ringe in beliebiger Größe.
package olympia;
import java.awt.Graphics;
public class Kreis {
private int x;
private int y;
private int r;
/**
* @param x Koordinate
* @param y Koordinate
* @param r Radius
*/
public Kreis(int x, int y, int r) {
this.x = x;
this.y = y;
this.r = r;
}
public void zeichnen(Graphics painter) {
// drawOval(x, y, width, height)
painter.drawOval(x - r, y - r, 2 * r, 2 * r);
painter.drawOval(x - r + 1, y - r + 1, 2 * (r - 1), 2 * (r - 1));
}
}
Rechteck.java
Um die Flagge nicht frei in der Luft schweben zu lassen, ziehen wir einen Rahmen. Hierzu hilft die Funktion drawRect().
package olympia;
import java.awt.Graphics;
public class Rechteck{
private int x;
private int y;
private int width;
private int height;
/**
* @param x Koordinate
* @param y Koordinate
* @param width Breite
* @param height Höhe
*/
public Rechteck(int x, int y, int width, int height)
{
this.x = x;
this.y = y;
this.width = width;
this.height = height;
}
public void zeichnen(Graphics pinsel)
{
// drawRect(x, y, width, height)
pinsel.drawRect(x - width / 2, y - height / 2, width, height);
pinsel.drawRect(x + 1 - width / 2, y + 1 - height / 2, width, height);
}
}
Text.java
Die Methode drawString() zeichnet den olympischen Text.
package olympia;
import java.awt.FontMetrics;
import java.awt.Graphics;
public class Text {
private int x;
private int y;
private String text;
/**
* @param x Koordinate
* @param y Koordinate
* @param text Text
*/
public Text(int x, int y, String text) {
this.x = x;
this.y = y;
this.text = text;
}
public void zeichnen(Graphics painter) {
FontMetrics metrics = painter.getFontMetrics();
int length = metrics.stringWidth(text);
painter.drawString(text, x - length / 2, y);
painter.drawString(text, x - length / 2 + 1, y);
}
}
Olympia.java
Die Olympia Klasse zeichnet die Flagge mit Hilfe der zuvor erstellten Klassen.
package olympia;
import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import javax.swing.JComponent;
public class Olympia extends JComponent {
/**
* Die Funktion paint() erstellt die Olympische
* Flagge mit Hilfe der Basisklassen Kreis, Rechteck und Text
*/
public void paint(Graphics painter) {
// Die Farbe der Zeichnungen wählen (hier: schwarz)
painter.setColor(new Color(0, 0, 0));
// Rechteck erzeugen
Rechteck r1 = new Rechteck(165, 110, 310, 200);
r1.zeichnen(painter);
// Kreise mit den entsprechenden Koordinaten erzeugen
// sowie dem Radiuswert von 45
Kreis k1 = new Kreis(65, 65, 45);
k1.zeichnen(painter);
Kreis k2 = new Kreis(165, 65, 45);
k2.zeichnen(painter);
Kreis k3 = new Kreis(265, 65, 45);
k3.zeichnen(painter);
Kreis k4 = new Kreis(115, 110, 45);
k4.zeichnen(painter);
Kreis k5 = new Kreis(215, 110, 45);
k5.zeichnen(painter);
// Schrift erzeugen
painter.setFont(new Font("Courier New", Font.BOLD, 20));
Text t1 = new Text(165, 200, "Olympia");
t1.zeichnen(painter);
}
}
OlympiaFlagge.java
Damit die Zeichnungen auch auf einer Oberfläche zu sehen ist, wird die Klasse OlympiaFlagge.java benötigt.
package olympia;
import javax.swing.JFrame;
public class OlympiaFlagge extends JFrame {
public OlympiaFlagge() {
// eine neue Olympia Flagge hinzufügen
add(new Olympia());
setTitle("Olympische Flagge");
setDefaultCloseOperation(EXIT_ON_CLOSE);
setSize(340, 250);
setLocation(100, 100);
setVisible(true);
}
public static void main(String[] args) {
new OlympiaFlagge();
}
}





Find ich Klasse was du so programierst.
Übrigends schöne und schlanke Homepage.
Grüße
Vielen Dank. Das hört man doch immer gerne.
Werde mir natürlich auch in Zukunft alle Mühe geben das Niveau zu halten.
Grüße