2013-08-29 65 views
1

我必須編寫一個方法,當用戶關閉一個窗口時會做些什麼。到目前爲止,我設法寫代碼,但它不工作(我把它放在我的初始化方法在我的控制器):關閉javafx窗口處理程序

Scene scene = myTable.getScene(); 


    Window window = null; 
     if (scene != null) 
     { 
     window = scene.getWindow(); 
     System.out.println("scene is not null"); 
     window.addEventHandler(WindowEvent.WINDOW_HIDDEN, new EventHandler<WindowEvent>  
     () 
     { 

     @Override 
     public void handle(WindowEvent w) 
     { 
      System.out.println("do somethong here"); 

     }; 
     }); 

不幸的是,即使我的信息「的場景是不是null沒有得到顯示沒有人有。如何做一個更好的主意嗎?

+0

*「不幸的是即使我的消息」場景不爲空也不會顯示。「*由於很明顯場景爲空,因此不顯示。 –

回答

1

添加更改偵聽器表中的場景屬性,只能增加你的事件處理程序,現場改爲非空值。

的建議Marc,撥打setOnCloseRequestsetOnHidden,可能是更好的配置EventHandler的方法。

2

如果希望當用戶關閉你應該使用這樣的setOnCloseRequest()方法關閉窗口做一些事情:

window.setOnCloseRequest(new EventHandler<WindowEvent>() { 

     @Override 
    public void handle(WindowEvent event) { 
     //do something 
    } 
}); 

現在如果場景null那麼這段代碼就不會被執行,什麼都不會發生,也許有點System.out.println(scene);之前測試將幫助您調試此問題。