// 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! // Bei "implements WindowListener" MÜSSEN ALLE Funktionen // aus WindowListener programmiert werden! // Es geht aber auch ohne, mit einer "Adapter"_Klasse, die // alle Funktionen bereits als "Dummy" enthält. public class Bedienbares_Fenster2 { 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); // WindowAdapter-Objekt erzeugen, dieser // enthält alle WindowListener-Funktionen, die // wir im Konstruktor ÜBERSCHREIBEN können // zumindest die, die wir brauchen). WindowListener wl = new WindowAdapter(){ // Hier kommen die ÄNDERUNGEN hin, die bezüglich // dem Original ÜBERLADEN werden sollen // Achtung: kleines w, großes C public void windowClosing(WindowEvent e){ // main(null); // Fies... Startet Programm neu e.getWindow().dispose(); // Fenster schließen System.out.println("Fenster geschlossen."); } }; f.addWindowListener(wl); // Aktionen hinzufügen // Das Fenster soll auch geschlossen werden, wenn man mit der // Maus einfach hineinklickt! MouseListener ml = new MouseAdapter(){ public void mouseClicked(MouseEvent m){ // Programmende System.exit(0); } }; f.addMouseListener(ml); System.out.println("Ende von main()"); } }