Could someone give me a few reasons why an Application isn't terminating on close?
*THIS IS FOR A JavaFX APPLICATION*

Recommended Answers

All 5 Replies

The most likely reason is that there's still a thread that is running in the background.

In Java, all GUI applications have at least two threads - the application itself and the GUI. In Swing, for example, you must specify the EXIT_ON_CLOSE flag for your top-level frame, otherwise the GUI will close but the application will still be running in the background.

If this is a desktop application, make sure you call Platform.exit() in whatever exit method you have.

If I use primaryStage.setOnCloseRequest() then I can't close my java.util.Timer.

The error it gives is "Cannot refer to a non-final variable timer inside an inner class defined in a different method"

Code is as follows:

        java.util.Timer timer = new java.util.Timer();

        primaryStage.setOnCloseRequest(new EventHandler<WindowEvent>()
        {

            @Override
            public void handle(WindowEvent event)
            {
                timer.cancel();
            }
        });

Also, Platform.exit() doesn't didn't work.

That's just a restriction on inner class binding to local variables (just ask if you want he full explanation). Simply make your timer variable an ordinary instance variable and the inner class will be abse to use it.

What do you mean "ordinary instance variable"?

One that's declared in the class, but not inside the definition of any method or constructor, and isn't static.

Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.