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.
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");} );
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With