2016-03-12 37 views
2

我是JavaFX的新手(並且對於Java來說生鏽,說實話),所以我很感謝在JavaFX應用程序中正確設計清理任務的一些幫助。在JavaFX應用程序中清理?

我的應用程序顯示其中每種形式的價值的數據作爲一個單獨的行寫入到DB2數據庫的輸入形式。當程序開始時,它首先獲得一個數據庫連接,並且甚至在繪製GUI成功之前也不費心;如果數據庫關閉,收集數據就不會被添加到數據庫中。假設連接已成功獲取,該應用程序將運行一整天,並且代碼只需整天重新使用原始連接。每次表單完成時,用戶單擊添加按鈕,並重復使用相同的語句來創建插入語句,然後提交插入。到現在爲止還挺好。

我的問題涉及何時/如何關閉數據庫連接。邏輯上,我想認爲當用戶點擊應用程序上的關閉按鈕時,我想這樣做。此時,我將執行disconnectFromDatabase()方法並讓應用程序正常關閉。

我有一個困難時期試圖找出何時/如何檢測關閉按鈕被按下。我曾經使用Swing,並使用setDefaultOnClose來檢測用戶是否關閉了應用程序,但我沒有在Java FX中找到等價物。

有人能描述在那裏/我應該如何檢測關閉按鈕已經被用戶按下?我猜我需要編寫一個偵聽器來檢測這個動作,但我真的不知道如何去做。

我可以張貼的程序,因爲它主張,如果必要的,但如果你能描述一下我需要用幾句話做,我可以大概判斷出精確的代碼,我需要我自己。

感謝您建議其他帖子,但它並沒有真正回答我的問題。我正在尋找一種方法來確定GUI上的「關閉」按鈕已被按下,這樣我就可以添加自己的清除代碼,除了Java所執行的標準功能之外,還應執行它們。事實證明,Java已經關閉了我的數據庫連接作爲其默認行爲的一部分,因此我不需要編寫任何代碼。不過,我知道重寫stop()方法似乎是一個很好的方法,如果我需要進行清理而不是由Java自動完成。

我不清楚自從我解決問題以來如何關閉我的問題。我也不確定一旦離開他們後如何找到我自己的帖子。 (通過選擇JavaFX下的所有主題,然後只查看最新的20多個,我只找到了回到這裏的方式。是否有任何方法可以找到我所有的帖子,而不管他們的年齡?)

+1

的可能的複製[如何關閉Java的窗口,點擊一個按鈕 - JavaFX項目(http://stackoverflow.com/questions/25037724/how-to-close-a-java-window-with-a-button-click-javafx-project) – aribeiro

+0

@aribeiro這看起來完全不同。 –

+0

您可以添加偵聽器:primaryStage.setOnCloseRequest((event) - > {closeConnection()}); – Timo

回答

2

override onStop - (讓我在android系統思考了第二)Application

@Override 
public void stop() throws Exception { 
// clean up goes here 
    //super.stop(); reason for comment this line, @fabian's comment 
} 
+0

在發佈我的問題後,我做了一些進一步的挖掘,並瞭解到我可以重寫stop()方法並將自己的清理代碼放在那裏。我寫了代碼,但後來我意識到我不需要它。 Java默認已經關閉了數據庫連接。 (我運行了DB2 List Applications命令來驗證。)我沒有意識到Java是那麼聰明的:-)我已經評論了重寫的stop()方法和我寫的關閉連接的方法,但是如果Java的默認行爲發生變化,它總會取消註釋。感謝您的及時回覆! – Henry

+1

由於該方法「什麼都不做」,因此不需要調用'super.stop()'(請參閱https://docs.oracle.com/javase/8/javafx/api/javafx/application/Application.html#stop - )。 (方法體是空的)。 – fabian