在JavaFX中,如果用户点击某个阶段的关闭按钮(X)(最右上角),我怎样才能获得该事件?
我希望我的应用程序在窗口关闭时打印调试消息。 (System.out.println("Application Close by click to Close Button(X)")
)
@Override
public void start(Stage primaryStage) {
StackPane root = new StackPane();
root.getChildren().add(btn);
Scene scene = new Scene(root, 300, 250);
primaryStage.setTitle("Hello World!");
primaryStage.setScene(scene);
primaryStage.show();
// Any Event Handler
//{
System.out.println("Application(primaryStage) Closed by click to Close Button(X)");
//}
}
答案 0 :(得分:15)
我得到了这个问题的答案
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);
}
});
}
});
答案 1 :(得分:9)
实现相同效果的另一种方法,但与启动应用程序的方式更加一致的是覆盖stop();
根据JavaFX文档,Application实例的生命周期如下:
无论何时启动应用程序,JavaFX运行时都会按顺序执行以下操作:
- 构造指定Application类的实例
- 调用init()方法
- 调用start(javafx.stage.Stage)方法
- 等待应用程序完成,当发生以下任一情况时会发生:
- 应用程序调用Platform.exit()
- 最后一个窗口已关闭且Platform上的implicitExit属性为true
- 调用stop()方法
醇>
因此,您只需覆盖stop()
@Override
public void stop(){
System.out.println("Stage is closing");
}
答案 2 :(得分:6)
month