问题描述
最小化以后, 直接右键桌面图标"关闭窗口", 再点击系统托盘, 无法再显示窗口
具体详情
代码设置了:
Platform.setImplicitExit(false);
因此调用 stage.hide(); 时不直接退出, 需要调用 System.exit(0); 才会真正退出.
stage.hide() 和 stage.close() 是一样的功能,没啥区别
当你在任务栏图标, 右键关闭窗口的时候 , 我猜系统是调用了 stage.hide()方法关闭了窗口.
问题就出在这, 你如果同时执行 stage.setIconfized(true); 和 stage.hide(); 你的stage会死掉~
所以我们需要在 最小化(stage.setIconfized(true))之后 , 在你关闭窗口(stage.hide())之前 将最小化的状态设为false (也就是stage.setIconfized(false);)
使用 stage.setOnCloseRequest 可以监听窗口关闭 ( 直接 X 掉窗口也会监听到哦)
解决方法 (注意:不需要在外面包一层 Platform.runlater();)
stage.setOnCloseRequest(new EventHandler<WindowEvent>() {
@Override
public void handle(WindowEvent event) {
if(primaryStage.isIconified()){
primaryStage.setIconified(false);
}
}
});