Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

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.

like image 684
skrilmps Avatar asked Feb 04 '23 06:02

skrilmps


1 Answers

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");} );
like image 156
skrilmps Avatar answered Feb 06 '23 19:02

skrilmps