2012-05-30 14 views
3

我有一堆控制對象(準確地說是TextBox),它們在FXML加載過程中使用@FXML註釋注入到我的代碼中。在退出時保存JavaFX控件的狀態

當用戶通過單擊標題欄上的關閉框來關閉場景時,我想保存這些控件的狀態,特別是文本值。但是,當我在OnCloseRequest處理程序中捕獲CloseRequest事件時,我發現控制變量的值爲null(原始注入工作,所以這是在FXML的加載和調用之間發生的事情OnCloseRequest)。

任何人都可以解釋這種行爲和/或建議如何獲得我想要的功能?

TIA

回答

2

onCloseRequest

當有一個外部請求關閉該窗口調用。 ...

(來自Javadoc)。 「外部請求」的含義之一是當您通過操作系統本地窗口關閉按鈕關閉窗口時。 closeRequest事件不是通過編程的stage.close()stage.hide()調用觸發的。因此請考慮處理onHidingonHidden事件。

否則發佈您的OnCloseRequest處理程序代碼。

+0

謝謝。我必須試着隱藏起來,看看它是否給出了我之後的行爲。這個名字使得它聽起來像是在窗口被遮擋時會被調用,但是JavaDoc使得它聽起來更像是隻有當窗口關閉時纔會被調用。如果它是前者,那麼它不是我想要的行爲,如果它是後者,那麼它是一個非常不好的名稱選擇。 – Michael

+0

如果您正在關閉'Stage',那麼[stage.close()](http://docs.oracle.com/javafx/2/api/javafx/stage/Stage.html#close())相當於stage.hide()。 –