Search code examples
javaswingwindowlistenerresource-cleanup

Calling windowClosed on an EXIT_ON_CLOSE JFrame


I have a small problem.

My Java application holds some native resources. I want to free those resources just before I exit the application. Therefore I wrote a WindowListener that frees those resources in windowClosed event.

The problem is that I am having a JFrame with EXIT_ON_CLOSE, so when I close the window, it shuts down the JVM and the event will never reach me.

If I use windowClosing event, then somebody can actually override the closing event ater I freed the resources. This will then lead to segfaults in native code.

I can just put away the EXIT_ON_CLOSE and call System.exit(0) from the listener, but that does not seem clean to me.


Solution

  • You could maybe add a shutdown hook and free the native resources there? Runtime.getRuntime().addShutdownHook(Thread t). See more info here.