JavaFX Stage close event handler

10,993

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");} );
Share:
10,993
skrilmps
Author by

skrilmps

Physicist, Martial Artist, Independent Video Game Developer

Updated on June 18, 2022

Comments

  • skrilmps
    skrilmps about 2 years

    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.