# setDefaultCloseOperation soll Methode zu Progammende aufrufe



## andreas71 (19. Okt 2006)

Ich habe ein Programm geschrieben, welches eine Klassen zum Beenden hat. Darin wird zum Beispiel die Verbindung zur Datenbank beendet.
Diese Klasse will ich auch aufrufen, wenn mittels "X" Symbol (schließen), das Fenster geschlossen wird. 
Bisher habe ich folgendes schrieben:

```
frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(600,620);
frame.setTitle("Bestenliste");
```

Wie bau ich das nun um, damit ich beim Schließen des Fensters eine Methode aufrufen kann?

Vielen Dank
Andreas


----------



## SlaterB (19. Okt 2006)

da brauchst du einen WindowListener,
der hat dann ein paar Operationen, die zu verschiedenen Zeitpunkten gerufen werden,

siehe Forumsuche 'WindowListener', die beiden neuesten Ergebnisse bringen Beispiele


----------



## foobar (20. Okt 2006)

Wie SlaterB schon geschrieben hat brauchst du einen WindowListener. Zusätzlich mußt du aber noch folgendes machen:


```
frame.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
```

ansonsten bringt dir der WindowListener nicht viel, da die Anwendung vorher beendet wird.


----------



## SlaterB (20. Okt 2006)

na das glaube ich aber nicht 
ein Listenerer darf noch schnell ran, dann ist aus die Maus

gibt da ja auch verschiedene Operationen
'windowClosing',
'windowClosed', ..

die erste wird noch gehen


----------



## L-ectron-X (20. Okt 2006)

SlaterB hat gesagt.:
			
		

> na das glaube ich aber nicht


Das kannste ruhig glauben.


----------



## André Uhres (21. Okt 2006)

SlaterB hat recht. "windowClosing" kommt noch dran ehe Schluss gemacht wird (zumindest in java 5).


----------



## andreas71 (22. Okt 2006)

Ich habe es jetzt wie folgt gelöst und es funktioniert.


```
public class MainFrame {
.....
	public void initFrame(){
		logger.info("create frame");
		frame = new JFrame();
		frame.addWindowListener(new WindowAdapter() {
		    public void windowClosing(WindowEvent e) {
		    	logger.info("call method to exit program");
		    	Exit programend = new Exit();
		    	programend.endall(frame);
		    }
		});
.....

public class Exit {
	static Logger logger = Logger.getLogger(Exit.class);
	
	public void endall(JFrame frame){
		
		//logger.info("close connection to db");

		logger.info("close window");
		frame.setVisible(false);
		frame.dispose();
		logger.info("exit program");
		System.exit(0);
	}
	
}
```


----------

