Java AWT: Frame

Willemers Informatik-Ecke

Frames sind eigene Fenster. Insbesondere, wenn man eine eigenstädige Anwendung, also kein Applet schreiben will, braucht man zunächst einen Frame. Bei einem Applet wird ein eigenes Fenster für die Anwendung erzeugt.

Dieses Beispiel erzeugt ein Fenster mit einem Rahmen und stellt es auf dem Bildschirm dar. Vorsicht: Das Fenster reagiert noch nicht auf den Schließbutton. Wenn Sie nicht wissen, wie Sie ein unwilliges Programm abschießen, sollten Sie zunächst nur Staunen und Schauen und die spätere Version abtippen.

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

public class MeinAWT {

    public static void main(String[] args) {
        Frame fenster = new Frame();
        fenster.setTitle("Mein AWT-Fenster");
        fenster.setSize(500, 300);
        fenster.setVisible(true);
    }
}

Hier ist schön zu sehen, wie fremde Klassen verwendet werden. Es wird ein Objekt der Klasse Frame aus der AWT-Bibliothek angelegt, das wir fenster nennen. Das Fenster bekommt einen Titel, der im Verschiebebalken stehen wird. Die Größe wird mit setSize() eingestellt. Anschließend wird das Fenster mit setVisible(true) sichtbar gemacht.

Methoden der Klasse Frame

MethodeFunktionalität
String getTitle() liefert den Titel
setTitle(String) setzt den Titel
setVisible(true) macht den Frame sichtbar oder unsichtbar
setMenuBar(MenuBar) hängt ein Menü ein
setSize(int, int) Größenänderung in Pixeln x/y
dispose() zerstöre den Frame

Schließbutton aktivieren

Wie schon angedeutet, kann das Fenster nicht geschlossen werden. Das Verschieben, Verkleinern und die Änderung der Größe funktionieren einwandfrei. Diese Funktionen stellt die Klasse Frame von sich aus zur Verfügung. Das Beenden der Applikation durch Schließen des Fensters überlässt die Klasse Frame der Applikation.

Zuständig für diese Grundfunktionen des Fensters ist ein WindowAdapter. Wenn der Schließbutton anders als bisher behandelt werden soll, müssen Sie einen eigenen WindowAdapter erstellen. Der neue WindowAdapter kann die bisherigen Methoden behalten, nur die Methode windowClosing ist interessant. Sie wird aufgerufen, wenn der Schließbutton gedrückt wird. In dieser Methode wird der Aufruf zum Verlassen des Programms System.exit(0) hineingesetzt. Ein solcher WindowAdapter wird in der folgenden Anweisung erzeugt.

WindowAdapter winAdapt = new WindowAdapter() {
    public void windowClosing(WindowEvent evt) {
        System.exit(0); }
    };
Nun muss der WindowAdapter noch mit dem Frame verkoppelt werden. Dazu bietet Frame die Methode addWindowListener an.

fenster.addWindowListener(winAdapt);
Das Objekt winAdapt wird nach der Übergabe an das Frame nicht mehr gebracht. Aus diesem Grund wird der WindowAdapter direkt in der Parameterklammer von addWindowListener erzeugt. Das sieht dann so aus:

fenster.addWindowListener(new WindowAdapter() {
    public void windowClosing(WindowEvent evt) {
        System.exit(0); }
    });
In seiner Kompaktheit ist der Ausdruck etwas erschreckend. Aber er tut, was er soll. Darum wird er nun in das Programm integriert.

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

public class MeinAWT {
    public static void main(String[] args) {
        Frame fenster = new Frame();
        fenster.setTitle("Schrödingers GUI");
        fenster.setSize(500, 300);
        fenster.addWindowListener(new WindowAdapter() {
            public void windowClosing(WindowEvent evt) {
                System.exit(0); }
            });
        fenster.setVisible(true);
    }
}
Dieses Programm lässt sich durch Anklicken des Schließbuttons beenden.


Homepage - Java (C) Copyright 2011 Arnold Willemer