Titel   Inhalt   Suchen   Index   DOC  Handbuch der Java-Programmierung, 7. Auflage
 <<    <     >    >>   API  Kapitel 29 - Low-Level-Events

29.1 Window-Events



Ein Window-Event wird immer dann generiert, wenn sich am Status eines Fensters eine Änderung ergeben hat, die für das Anwendungsprogramm von Interesse sein könnte. So erlangt das Programm beispielsweise Kenntnis davon, wenn ein Fenster erstellt oder zerstört, aktiviert oder deaktiviert oder wenn es symbolisiert oder wiederhergestellt wird.

Ein Empfänger für Window-Events muss das Interface WindowListener implementieren und bekommt Events des Typs WindowEvent übergeben. WindowEvent erweitert die Klasse ComponentEvent und stellt neben getID und getSource die Methode getWindow zur Verfügung, mit der das Fenster ermittelt werden kann, das die Nachricht ausgelöst hat.

public Window getWindow()
java.awt.event.WindowEvent

Die Registrierung der Empfängerklasse erfolgt mit der Methode addWindowListener, die in den Klassen Dialog und Frame zur Verfügung steht:

public void addWindowListener(WindowListener l)
java.awt.Frame

Tabelle 29.1 gibt eine Übersicht der Methoden von WindowListener und erklärt ihre Bedeutung:

Ereignismethode Bedeutung
windowActivated Das Fenster wurde aktiviert. Diese Methode wird nach dem Erstellen des Fensters aufgerufen und wenn ein Fenster, das im Hintergrund stand, erneut in den Vordergrund gelangt.
windowClosed Das Fenster wurde geschlossen.
windowClosing Das Fenster soll geschlossen werden. Diese Methode wird aufgerufen, wenn der Anwender das Fenster über die Titelleiste, das Systemmenü oder die Tastenkombination [ALT]+[F4] schließen will. Es liegt in der Verantwortung der Anwendung, in diesem Fall Code zur Verfügung zu stellen, der das Fenster tatsächlich schließt. Standardmäßig reagiert das Programm nicht auf diese Benutzeraktionen.
windowDeactivated Das Fenster wurde deaktiviert, also in den Hintergrund gestellt.
windowDeiconified Das Fenster wurde wiederhergestellt, nachdem es zuvor auf Symbolgröße verkleinert worden war.
windowIconified Das Fenster wurde auf Symbolgröße verkleinert.
windowOpened Das Fenster wurde geöffnet.

Tabelle 29.1: Methoden von WindowListener

Das folgende Programm demonstriert die Anwendung der Methode windowClosing, deren Verwendung bereits in Abschnitt 24.2.4 gezeigt wurde. Dazu leitet es aus Frame eine neue Klasse CloseableFrame ab und registriert im Konstruktor einen anonymen WindowAdapter, der windowClosing überlagert und das Fenster durch Aufrufe von setVisible(false) und dispose() schließt. Alle Ableitungen von CloseableFrame besitzen nun die Fähigkeit, vom Anwender per Systemmenü, per Schließen-Button oder (unter Windows) durch Drücken von [ALT]+[F4] beendet zu werden.

Die Klasse Listing2901 demonstriert die Anwendung der neuen Klasse und erzeugt ein Fenster wnd aus CloseableFrame. Um das Programm nach dem Schließen des Fensters zu beenden, registriert es bei der Fensterklasse zusätzlich einen anonymen WindowAdapter, der bei Aufruf von windowClosed (also nach dem Schließen des Fensters) das Programm per Aufruf von System.exit beendet:

001 /* Listing2901.java */
002 
003 import java.awt.*;
004 import java.awt.event.*;
005 
006 class CloseableFrame
007 extends Frame
008 {
009   public CloseableFrame()
010   {
011     this("");
012   }
013 
014   public CloseableFrame(String title)
015   {
016     super(title);
017     addWindowListener(
018       new WindowAdapter() {
019         public void windowClosing(WindowEvent event)
020         {
021           setVisible(false);
022           dispose();
023         }
024       }
025     );
026   }
027 }
028 
029 public class Listing2901
030 {
031   public static void main(String[] args)
032   {
033     CloseableFrame wnd = new CloseableFrame("CloseableFrame");
034     wnd.setBackground(Color.lightGray);
035     wnd.setSize(300,200);
036     wnd.setLocation(200,100);
037     wnd.setVisible(true);
038     wnd.addWindowListener(
039       new WindowAdapter() {
040         public void windowClosed(WindowEvent event)
041         {
042           System.out.println("terminating program...");
043           System.exit(0);
044         }
045       }
046     );
047   }
048 }
Listing2901.java
Listing 29.1: Die Klasse CloseableFrame


 Titel   Inhalt   Suchen   Index   DOC  Handbuch der Java-Programmierung, 7. Auflage, Addison Wesley, Version 7.0
 <<    <     >    >>   API  © 1998, 2011 Guido Krüger & Heiko Hansen, http://www.javabuch.de