setDefaultCloseOperation soll Methode zu Progammende aufrufe

  • Themenstarter Themenstarter andreas71
  • Beginndatum Beginndatum
Status
Nicht offen für weitere Antworten.
A

andreas71

Gast
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:
Code:
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
 
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
 
Wie SlaterB schon geschrieben hat brauchst du einen WindowListener. Zusätzlich mußt du aber noch folgendes machen:

Code:
frame.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);

ansonsten bringt dir der WindowListener nicht viel, da die Anwendung vorher beendet wird.
 
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
 
Ich habe es jetzt wie folgt gelöst und es funktioniert.

Code:
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);
	}
	
}
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben