java - 当您从任务栏关闭 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);
});
解决方案
根据@James_D 的回复,我意识到我在不正确的位置添加了关闭挂钩,以帮助其他对 java 和 JavaFX 比较陌生的人在添加关闭挂钩时必须在 main 方法中调用 launch(args) 之前执行此操作。
推荐阅读
- laravel - Laravel 子域端点不断重定向并出现 301 错误
- excel - 如何收集从 vba 中的 for 循环创建的所有打印预览?
- arduino - 带有 Arduino 的超声波传感器
- http-live-streaming - 在 HLS 中使用 WebVTT 字幕:是否需要分段?
- css - 图像在较小的屏幕上未垂直对齐
- r - 选择不同列的值不是 R 中某个值的行
- c++ - 什么可以解释 GDB 中的这种奇怪行为?
- javascript - Avatar 和 Ping 命令,帮帮我?:D
- r - 在 R 中:如何计算一个向量内由另一个向量指定的不同元素的平均值?
- php - Laravel 7 检测到错误的 MIME 类型