2012-04-14 10 views
2

Ich habe ein kleines Problem.Aufruf von windowClosed auf einem EXIT_ON_CLOSE JFrame

Meine Java-Anwendung enthält einige native Ressourcen. Ich möchte diese Ressourcen freigeben, bevor ich die Anwendung beende. Daher schrieb ich eine WindowListener, die diese Ressourcen in windowClosed Ereignis freigibt.

Das Problem ist, dass ich eine JFrame mit EXIT_ON_CLOSE habe, wenn ich also das Fenster schließe, schaltet es die JVM ab und das Ereignis wird mich nie erreichen.

Wenn ich windowClosing Ereignis verwenden, kann jemand tatsächlich das schließende Ereignis überschreiben, nachdem ich die Ressourcen freigegeben habe. Dies führt dann zu Fehlern in systemeigenem Code.

Ich kann nur die EXIT_ON_CLOSE weglegen und System.exit(0) vom Zuhörer anrufen, aber das scheint mir nicht sauber.

Antwort

3

Sie könnten vielleicht einen Shutdown Hook hinzufügen und dort die nativen Ressourcen freigeben? Runtime.getRuntime().addShutdownHook(Thread t). Weitere Informationen finden Sie unter here.

+0

Nizza unterbrochen bekommt, genau das, was ich brauchte. Die Bereinigung von der GUI schien auch nicht richtig zu sein. –

0

Sie können die JFrame im windowClosing verstecken, bevor die Ressourcen frei, so dass Sie sicherstellen können, es nicht