Grafik in JAVA

Die grafischen Fähigkeiten von JAVA sind recht gut. Allerdings ist es auch mühselig, eine grafische Oberfläche mit JAVA zu programmieren. Deswegen gehe ich hier nur kurz auf die Grafik in JAVA ein. Grafische Oberflächen bespreche ich im zweiten Teil zusammen mit NetBeans 7, da dort einiges "automatisiert" wurde und es deswegen viel komfortabler ist eine Oberfläche zu gestalten.

Um Grafik in JAVA zu benutzen muss das Packet AWT importiert werden. Darin sind die Methoden und Objekte enthalten, die man benötigt, um ein Fenster zu öffnen und darin etwas darzustellen. AWT bedeutet "Abstract Window Toolkit" und ist eine Sammlung von verschiedenen Klassen.

Als Beispiel werden wir eine Deutschlandfahne zeichnen. Wie immer zuerst das Programm:


                 import java.awt.*;
                 import java.awt.event.*;

                 public class Deutschlandfahne extends Frame {

                 /* Programm Deutschlandfahne von Heiko Schmuck, im Mai 2011
                 * Das Programm erzeugt ein Fenster und gibt eine Fahne in der Mitte
                 * auf dem Bildschirm aus.
                 */

                         Deutschlandfahne () {

                                 // Neue Fahne in der Mitte (Center) des Fensters erzeugen.
                                 // Die Klasse Fahne steht weiter unten
                                 add ("Center", new Fahne());

                                 // Programm beim schließen des Fensters beenden
                                 addWindowListener(new WindowAdapter() {
                                         public void windowClosing(WindowEvent e) {
                                                 System.exit(0);
                                         }
                                 });

                                 // Die Eigenschaften des Fensters festlegen:

                                 // Titel des Fensters
                                 setTitle ("Deutschlandfahne");

                                 // Größe des Fensters (300 x 250 pixel)
                                 setSize (300, 250);

                                 // Das Fenster anzeigen
                                 setVisible (true);
                         }

                         // Main startet die Ausgabe
                         public static void main (String [ ] args) {
                                 new Deutschlandfahne ();
                         }
                 //Die Klasse Deutschlandfahne schließen
                 }


                 class Fahne extends Canvas {

                         // Drei farbige rechtecke zeichnen
                         public void paint (Graphics g) {

                                 // Die Eigenschaften der Rechtecke festlegen:

                                 // Ein schwarzes Rechteck
                                  g.setColor (Color.black);

                                 // linke obere Ecke 40 pixel von links, 40 pixel von oben,
                                 // 200 pixel breit, 40 pixel hoch
                                 g.fillRect (40,40,200,40);

                                 // Ein rotes Rechteck
                                 g.setColor (Color.red);

                                 // linke obere Ecke 40 pixel von links, 80 pixel von oben,
                                 // 200 pixel breit, 40 pixel hoch
                                 g.fillRect (40,80,200,40);

                                 // Ein gelbes Rechteck
                                 g.setColor (Color.yellow);

                                 // linke obere Ecke 40 pixel von links, 120 pixel von oben,
                                 // 200 pixel breit, 40 pixel hoch
                                 g.fillRect (40,120,200,40);

                                 // Die Zeichnung beschriften:

                                 // Schwarze Schrift
                                 g.setColor(Color.black);

                                 // unterhalb der Zeichnung
                                 //linke obere Ecke 100 pixel von links, 180 pixel von oben,
                                 g.drawString("Deutschland", 100, 180);
                         }
                 //Die Klasse Fahne schließen
                 }

OK, was machen wir hier? Als erstes werden zwei Klassen impotiert java.awt.*; und java.awt.event.*;. Die Klasse java.awt.*; gibt uns die Fähigkeit ein Fenster zu öffnen und die Fahne zu zeichnen. Die Klasse java.awt.event.*; ermöglicht es, auf ein Ereignis zu reagieren, wie zum Beispiel, das Schließen des Fensters.

Eine neue Möglichkeit, die wir hier kennenlernen, ist es schon bestehende Klassen mit eigenen Funktionen zu erweitern. In unserem Fall erweitern wir die Klasse Frame mit unserer Deutschlandfahne: public class Deutschlandfahne extends Frame. Dadurch können wir in dieser Klasse auf die Eigenschaften von Frame zugreifen, ohne das Objekt Frame zu erzeugen.
Im Konstruktor der Klasse Deutschlandfahne wird die Zeile add ("Center", new Fahne()); ausgeführt. Mit dieser Zeile wird im Fenster (Frame), in der Mitte (Center), eine neue Fahne erzeugt, ohne das wir "new Frame()" benötigt haben.
setTitle, setSize und setVisible sind Eigenschaften von Frame. Mit ihrer Hilfe setzen wir den Titel, die Größe und sagen dem Programm, dass das Fenster sichtbar sein soll.

Die Klasse Fahne erweitert die Klasse Canvas. Canvas heißt auf Deutsch Leinwand, ist also die Stelle im Programm an der wir malen. Diesmal wird die Klasse allerdings nicht wirklich erweitert, sondern wir überschreiben die Methode paint der Klasse Canvas, mit unserem eigenen Programm, der Fahne. Wenn jetzt die Fahne aufgerufen wird, malt JAVA automatisch unsere Fahne an der Stelle, an der wir sie im Programm aufrufen.

Um unsere Fahne zu zeichnen, erzeugen wir untereinander drei Rechtecke in den Farben Schwarz, Rot und Gelb. Als Startpunkt geben wir den Abstand der linken, oberen Ecke des Rechteckes, zur linken, oberen Ecke unseres Fensters an. Im ersten Fall gehen wir also 40 Pixel nach rechts und dann 40 Pixel nach unten. (Ein Pixel ist ein Punkt auf dem Bildschirm.) Dort beginnt unser Rechteck. Von dort gehen wir 200 Pixel nach rechts und wieder 40 Pixel nach unten - Fertig! Die entstehende Fläche wird Schwarz ausgemalt.
Um das nächste Rechteck zu zeichnen gehen wir genauso vor, nur das der Startpunkt nun 40 Pixel nach rechts und 80 Pixel nach unten ist. Das dritte Rechteck beginnt dann bei 40 Pixel nach rechts und 120 Pixel nach unten.

Zum Schluß schreiben wir noch "Deutschland" unter die Fahne. Der String wird 100 Pixel von links und 180 Pixel von oben eingefügt.

Das ganze sieht dann so aus:

Mit JAVA programmieren

Als Entwicklungsumgebung benutze ich NetBeans 7.