首页 > 解决方案 > 当您从任务栏关闭 javafx 应用程序时会触发什么事件以及如何处理它?

问题描述

我看过一些关于此的帖子,这些帖子的答案标记为正确,即使它们似乎不起作用,这可能有多种原因。

例子

我想要处理用户通过右键单击应用程序从任务栏中关闭应用程序的事件,我想处理这个以确保干净关闭并确保保存所有用户数据。

我尝试添加一个关闭挂钩(下面的示例),但是从任务栏关闭应用程序时没有触发

Runtime.getRuntime().addShutdownHook(new Thread(()->{
    System.out.println("closing . . .");
}));

我尝试的另一种方法是为我的阶段添加一个 setOnCloseRequest 侦听器,如下所示,但是当从任务栏关闭应用程序时,也没有触发 WINDOW_CLOSE_REQUEST 事件。

stage.setOnCloseRequest(event2 -> {
   System.out.println("closing . . .");
   Platform.exit();
   System.exit(0);
});

标签: javajavafxshutdown-hook

解决方案


根据@James_D 的回复,我意识到我在不正确的位置添加了关闭挂钩,以帮助其他对 java 和 JavaFX 比较陌生的人在添加关闭挂钩时必须在 main 方法中调用 launch(args) 之前执行此操作。


推荐阅读