Titel | Inhalt | Suchen | Index | DOC | Handbuch der Java-Programmierung, 3. Auflage |
<< | < | > | >> | API | Kapitel 29 - Low-Level-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 muß 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 23.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 |
Titel | Inhalt | Suchen | Index | DOC | Handbuch der Java-Programmierung, 3. Auflage, Addison Wesley, Version 3.0.1 |
<< | < | > | >> | API | © 1998-2003 Guido Krüger, http://www.javabuch.de |