2014-01-14 83 views
1

我試圖防止關閉我的應用程序,但看着JavaFX文檔(和一些實現後),我注意到setOnCloseRequest()只有在用戶試圖用關閉按鈕關閉窗口或ALT + F4快捷鍵。因爲我需要攔截接近內部的嘗試,我用setOnHiding(),這樣我可以趕上應用的緊密主對話框的所有嘗試,但我仍然不能防止關閉:防止隱藏主對話框

public abstract class AppBase extends Application { 
    public void init(){ 
     dialogoPrincipal.getPainel().getScene().getWindow().setOnHiding(new EventHandler<WindowEvent>() { 
      @Override 
      public void handle(WindowEvent event) { 
       event.consume(); 
      } 
     }); 
    } 
} 

有我做錯了什麼?還有其他方法可以解決這個問題嗎?

+0

請問你爲什麼要有效地阻止應用程序的終止? – Alexandre

+0

@PeekaySwitch根據用戶的任務,應用程序在嘗試關閉時會要求確認。 – brevleq

回答

3

CloseRequest事件由GUI用戶觸發,並且Hide事件以編程方式調用。所以你可以控制hide事件調用的代碼流程。實現一些類似StageUtil.hideRequest(stage)的wrapper util類,或者擴展你自己的stage.myHide()等。hiding事件似乎不能被消耗,我認爲這是一個正確的決定設計。在他們的javadoc中描述了hidinghidden事件的目的,並且沒有提及它們的消耗。

0

嘗試的控制器上實現窗口的事件處理程序:

public class XYZ implements EventHandler<WindowEvent> 
{ 
    @Override 
    public void handle(WindowEvent closeEvent) 
    { 
     closeEvent.consume(); 
    } 
} 

或嘗試實施它在你的應用平臺類。

+0

我試過了,但問題仍然存在 – brevleq