問題描述
最小化以後, 直接右鍵桌面圖標"關閉窗口", 再點擊系統托盤, 無法再顯示窗口
具體詳情
代碼設置了:
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);
}
}
});