2011-04-17 71 views
5

我正在使用Swing編寫一個小型Java應用程序。 該應用程序還具有網絡組件。在退出Java應用程序之前進行清理

我想在退出之前運行一些代碼(關閉通道,鍵等)。有沒有辦法做到這一點,沒有在我的界面添加一個退出按鈕,在其中做我的清理,然後做System.exit ()?

回答

5

你應該可以在windowClosing()中做你想做的,如here所示。

8

您可以使用Runtime#addShutdownHook函數添加一個函數以在JVM關閉時運行。

+0

IMO這是最好的答案......如果您的應用程序在窗口關閉時設置爲EXIT而不是DISPOSE,則不會調用windowClosing()。不保證在所有情況下都被調用,因此不能保證您的資源得到清理。 – teh1 2012-06-24 01:58:03

1

'關閉鍵':SelectionKeys?你不需要對這些做任何事情。關閉頻道將自動取消所有SelectionKeys。除非你有待處理的數據,否則你需要刷新,你也不需要關閉頻道,操作系統會爲你做。

+0

我想我有一些懸而未決的數據或者什麼,因爲我會在應用程序的多次運行中出現一些奇怪的行爲。現在我做了適當的清理,似乎恢復了正常。 – adivasile 2011-04-18 08:14:41

相關問題