// Problem: Das Fenster reagiert nicht (oder nur unzureichend) // auf Ereignisse wie "Öffnen", "Neu Zeichnen", "Schließen" // Lösung: Wir verwenden Interface-Klassen, um die // erforderlichen Aktionen zu programmieren! // Die Event-Funktionen aus EindowListener werden AUTOMATISCH // aufgerufen, wenn die import java.awt.*; // Frame, Graphics, ... import java.awt.event.*; // Aktionen! public class Bedienbares_Fenster implements WindowListener { public static void main(String[] args) { System.out.println("Start von main()"); // Frame-Objekt erzeugen Frame f = new Frame("Bedienbares Fenster"); f.setSize(400,400); f.setVisible(true); // WindowListener-Objekt erzeugen, wir können // hierfür die eigene Klasse verwenden! WindowListener wl = new Bedienbares_Fenster(); f.addWindowListener(wl); // Aktionen hinzufügen System.out.println("Ende von main()"); } // Diese Funktionen MÜSSEN programmiert werden, da sie // in der vererbten Klasse "WindowListener" verlangt // werden. public void windowActivated(WindowEvent e){ System.out.println("Das Fenster wurde aktiviert!"); } // Wird aufgerufen, wenn der Benutzer WÜNSCHT, das Fenster // zu schließen public void windowClosing(WindowEvent e){ System.out.println("Schließen-Button gedrückt!"); // Hole das Fenster-Objekt aus dem Event, // und rufe aus dem Fenster-Objekt die "Schließen"- // Funktion auf! e.getWindow().dispose(); // System.exit(0); // Beendet das Programm } public void windowClosed(WindowEvent e){ System.out.println("Fenster geschlossen!"); } public void windowOpened(WindowEvent e){ System.out.println("Fenster göffnet!"); } public void windowIconified(WindowEvent e){ System.out.println("Fenster iconifiziert!"); } public void windowDeiconified(WindowEvent e){ System.out.println("Fenster wiederhergestellt!"); } public void windowDeactivated(WindowEvent e){ System.out.println("Fenster deaktiviert!"); } }