Skip to content
Advertisement

JFrame keeps application running even after closing

I have a class with only static methods and one of them opens a JOptionPane error message dialogue using a JFrame object as component.

This is the class + method:

JavaScript

The ErrorPopup method is used inside a JavaFX controller and other places, called like this:

JavaScript

Problem is that the application’s process won’t close when I close the the program from the window’s ✕ after the popup appears, because the JFrame was created and shown. I know the JFrame is the culprit, so I added the errorWindow.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); but it doesn’t seem to do anything, since the program isn’t closing.

In this question: JFrame and why stay running The accepted answer talks about non-daemon threads, but the only thread I open is a daemon one, so unless JavaFX open one then it can’t be that I believe.

So, why does the process keep running and how can I solve it?

I’m still new to Java so if I made a mistake and/or my code shows bad practices please do point them out!

Edit: I’m using a JFrame because I need the setAlwaysOnTop, since using JOptionPane.showMessageDialog(null, message, "Error", JOptionPane.ERROR_MESSAGE); opens it not on top of the JavaFX window. If there’s a better way let me know.

Advertisement

Answer

This:

JavaScript

does nothing of use since the object is still displayed. You want this instead:

JavaScript

Actually, even better, simply get rid of errorWindow altogether and pass null as the first parameter to the JOptionPane.

User contributions licensed under: CC BY-SA
2 People found this is helpful
Advertisement