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   <<   <   >   >> 

17.2 Aufrufen und Schließen eines Fensters



Um ein Fenster auf dem Bildschirm anzuzeigen, muß zunächst die passende Fensterklasse instanziert werden. Dafür kommen die Klassen Window, Frame, Dialog, Applet und FileDialog in Frage. Da die beiden Dialogklassen und die Entwicklung von Applets später behandelt werden, verbleiben die Klassen Window und Frame. Beide Klassen haben unterschiedliche Konstruktoren:

public Frame()

public Frame(String title)
java.awt.Frame

public Window(Frame parent)
java.awt.Window

Ein Objekt der Klasse Frame kann demnach parameterlos oder mit einem String, der den Titel des Fensters angibt, erzeugt werden. Bei der Instanzierung eines Window-Objekts muß dagegen das Vaterfenster übergeben werden.

Nach der Instanzierung wird die Methode setVisible aufgerufen, um das Fenster anzuzeigen:

public void setVisible(boolean visible)
java.awt.Component

Der Parameter visible gibt an, ob das Fenster angezeigt oder geschlossen werden soll. Wird true übergeben, so wird es angezeigt, andernfalls geschlossen. Die Aufrufsyntax ist für Frame und Window identisch, denn setVisible wurde aus der gemeinsamen Oberklasse Component geerbt. Ein Aufruf von setVisible(true) legt die Fensterressource an, stattet das Fenster mit einer Reihe von Standardeigenschaften aus und zeigt es auf dem Bildschirm an.

Um ein Fenster zu schließen, sind die Methoden setVisible(false) und dispose aufzurufen:

public void dispose()
java.awt.Window

setVisible(false) macht das Fenster unsichtbar, und dispose gibt die zugeordneten Windows-Ressourcen frei und entfernt das Fenster aus der Owner-Child-Registrierung.

In der aktuellen Implementierung enthält dispose am Anfang einen Aufruf von hide, durch das seinerseits ein implizites setVisible(false) aufgerufen wird. Daher wäre es auch möglich, ein Fenster mit einem einzigen Aufruf von dispose zu schließen. Der zusätzliche Aufruf von setVisible(false) ist allerdings nicht schädlich und macht die Aufgabentrennung beider Methoden deutlich.

 Hinweis 

Das folgende Beispiel zeigt ein Programm, das einen Frame auf dem Bildschirm anzeigt, ihn nach ca. 3 Sekunden wieder entfernt und das Programm dann beendet:

001 /* Listing1701.java */
002 
003 import java.awt.*;
004 
005 public class Listing1701
006 {
007    public static void main(String[] args)
008    {
009       Frame frame = new Frame("Listing1701");
010       frame.setSize(300,200);
011       frame.setVisible(true);
012       try {
013          Thread.sleep(3000);
014       } catch (InterruptedException e) {
015          //nichts
016       }
017       frame.setVisible(false);
018       frame.dispose();
019       System.exit(0);
020    }
021 }
Listing1701.java
Listing 17.1: Anzeigen und Entfernen eines Frames

 Beispiel 


 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