Tit   Inh   Ind   1   2   3   4   5   6   7   8   9   10   11   12   13   14   15   16   17   18   19   20   21   22   23   24   25   26   27   28   29   30   31   32   <<   <   >   >> 

14.2 Grundlagen der Grafikausgabe



14.2.1 Anlegen eines Fensters

Um die Grafikfähigkeiten von Java nutzen zu können, muß das Paket java.awt eingebunden werden. Dies geschieht zweckmäßigerweise mit Hilfe folgender Anweisung am Anfang der Klassendefinition:

import java.awt.*;

Danach stehen alle Klassen aus dem Paket java.awt zur Verfügung.

Zur Ausgabe von grafischen Elementen benötigt die Anwendung ein Fenster, auf das die Ausgabeoperationen angewendet werden können. Während bei der Programmierung eines Applets ein Standardfenster automatisch zur Verfügung gestellt wird, muß eine Applikation ihre Fenster selbst erzeugen. Da die Kommunikation mit einem Fenster über eine Reihe von Callback-Methoden abgewickelt wird, wird eine Fensterklasse in der Regel nicht einfach instanziert. Statt dessen ist es meist erforderlich, eine eigene Klasse aus einer der vorhandenen abzuleiten und die benötigten Interfaces zu implementieren.

Zum Ableiten einer eigenen Fensterklasse wird in der Regel entweder die Klasse Frame oder die Klasse Dialog verwendet, die beide aus Window abgeleitet sind. Da Dialog vorwiegend dafür verwendet wird, Dialogboxen zu erstellen, die über darin enthaltene Komponenten mit dem Anwender kommunizieren, wollen wir ihre Verwendung bis zum Kapitel 21 zurückstellen. Die wichtigste Klasse zur Ausgabe von Grafiken in Java-Applikationen ist also Frame.

Um ein einfaches Fenster zu erzeugen und auf dem Bildschirm anzuzeigen, muß ein neues Element der Klasse Frame erzeugt, auf die gewünschte Größe gebracht und durch Aufruf der Methode setVisible sichtbar gemacht werden:

001 /* Listing1401.java */
002 
003 import java.awt.*;
004 
005 class Listing1401
006 {
007    public static void main(String args[])
008    {
009       Frame wnd = new Frame("Listing1401");
010 
011       wnd.setSize(400,300);
012       wnd.setVisible(true);
013    }
014 }
Listing1401.java
Listing 14.1: Ein einfaches Fenster erzeugen

 Beispiel 

Das Ausführen dieses Programms führt dazu, daß ein Fenster mit dem Titel »Listing1401« erzeugt und in der Größe 400*300 Pixel auf dem Bildschirm angezeigt wird.

Da wir noch keinen Code für die Behandlung von GUI-Events eingebaut haben, bietet das Fenster lediglich das von Windows her bekannte Standardverhalten. Es läßt sich verschieben und in der Größe verändern und besitzt eine Titel- und Menüleiste, die mit einem Systemmenü ausgestattet ist. Anders als in anderen grafikorientierten Systemen gibt es noch keine Funktionalität zum Beenden des Fensters. Das Beispielprogramm kann daher nur durch einen harten Abbruch seitens des Benutzers (z.B. durch Drücken von [STRG]+[C] in der DOS-Box, aus der das Fenster gestartet wurde) beendet werden. Wir werden im nächsten Beispiel Programmcode zum ordnungsgemäßen Schließen des Fensters einfügen.

 Hinweis 

14.2.2 Die Methode paint

Die Ausgabe in ein Fenster erfolgt durch Überlagern der Methode paint, die immer dann aufgerufen wird, wenn das Fenster ganz oder teilweise neu gezeichnet werden muß. Dies ist beispielsweise dann der Fall, wenn das Fenster zum ersten Mal angezeigt wird oder durch Benutzeraktionen ein Teil des Fensters sichtbar wird, der bisher verdeckt war. paint bekommt beim Aufruf eine Instanz der Klasse Graphics übergeben:

public void paint(Graphics g)
java.awt.Component

Graphics ist Javas Implementierung eines Device-Kontexts (auch Grafikkontext genannt) und stellt somit die Abstraktion eines universellen Ausgabegeräts für Grafik und Schrift dar. Die Klasse bietet Methoden zur Erzeugung von Linien-, Füll- und Textelementen. Darüber hinaus verwaltet Graphics die Zeichenfarbe, in der alle Ausgaben erfolgen, und einen Font, der zur Ausgabe von Schrift verwendet wird. Ein Device-Kontext kann daher als eine Art universelles Ausgabegerät angesehen werden, das elementare Funktionen zur Ausgabe von farbigen Grafik- und Schriftzeichen zur Verfügung stellt.

14.2.3 Das grafische Koordinatensystem

Die Ausgabe von Grafik basiert auf einem zweidimensionalen Koordinatensystem, dessen Ursprungspunkt (0,0) in der linken oberen Ecke liegt (siehe Abbildung 14.1). Positive x-Werte erstrecken sich nach rechts, positive y-Werte nach unten. Die Maßeinheit entspricht einem Bildschirmpixel und ist damit geräteabhängig.

In den meisten Fällen steht dem Programm nicht das gesamte Fenster zur Ausgabe zur Verfügung, sondern es gibt Randelemente wie Titelzeilen, Menüs oder Rahmen, die nicht überschrieben werden können. Mit der Methode getInsets kann die Größe dieser Randelemente ermittelt werden. Wir werden darauf in Kapitel 15 noch einmal zurückkommen.

Abbildung 14.1: Das Koordinatensystem von Java


 Tit   Inh   Ind   1   2   3   4   5   6   7   8   9   10   11   12   13   14   15   16   17   18   19   20   21   22   23   24   25   26   27   28   29   30   31   32   <<   <   >   >> 
Go To Java 2, Addison Wesley, Version 1.0.2, © 1999 Guido Krüger, http://www.gkrueger.com