skrilmps
skrilmps

Reputation: 695

JavaFX Stage close event handler

I have a Stage in JavaFX that can be closed in multiple ways, either by clicking the red (X) or by a Button which calls stage.close()

Regardless of how the Stage is closed, I would like to perform an action before (or as) it is closed.

If I use the following code:

myStage.setOnCloseRequest( event -> {System.out.println("Closing Stage");} );

then the handler is called when I click the (X) but not when I call myStage.close()

This is the same issue that this question talks about (with a key difference): JavaFX: Stage close handler

The difference is that he wants to call a handler as the entire application is closed, and therefore can override the Application's stop() method. However I'm not closing the entire application, just one stage. And Stage does not have a stop() method to override.

Thanks for any help.

Upvotes: 7

Views: 15183

Answers (1)

skrilmps
skrilmps

Reputation: 695

Thanks to comments by VGR, the solution I was looking for really was as simple as replacing setOnCloseRequest with setOnHiding:

myStage.setOnHiding( event -> {System.out.println("Closing Stage");} );

Upvotes: 13

Related Questions