In JavaFX, how can I get the event if a user clicks the Close Button(X) (right most top cross) a stage?
I want my application to print a debug message when the window is
I got the answer for this question
stage.setOnHiding(new EventHandler<WindowEvent>() {
@Override
public void handle(WindowEvent event) {
Platform.runLater(new Runnable() {
@Override
public void run() {
System.out.println("Application Closed by click to Close Button(X)");
System.exit(0);
}
});
}
});
Another method for achieving the same effect, but remains more consistent with the way you start your application is to override stop();
According to the JavaFX documentation, the lifecycle of an instance of an Application is as follows:
The JavaFX runtime does the following, in order, whenever an application is launched:
- Constructs an instance of the specified Application class
- Calls the init() method
- Calls the start(javafx.stage.Stage) method
- Waits for the application to finish, which happens when either of the following occur:
- the application calls Platform.exit()
- the last window has been closed and the implicitExit attribute on Platform is true
- Calls the stop() method
As a result you simply override stop()
@Override
public void stop(){
System.out.println("Stage is closing");
}
stage.setOnCloseRequest(new EventHandler<WindowEvent>() {
public void handle(WindowEvent we) {
System.out.println("Stage is closing");
}
});