簡體   English   中英

Java Swing關閉消息框

[英]Java swing closing message box

當用戶關閉我的程序時,該程序需要關閉一些后台進程,這些進程可能需要一段時間才能關閉。 因此,我希望在出現消息框並通知用戶時通知用戶,然后在完成所有后台進程后,該消息框應消失。

與此類似的一個示例是,當您關閉Eclipse時,將出現一個消息框,通知用戶該環境正在與其他關閉進程一起保存。

我該怎么做呢?

您可以 WindowListener 添加到頂級JFrame中,偵聽windowClosing事件,然后彈出一個對話框。 就使對話框自行關閉而言,您可能需要使用JProgressBar來通知用戶還剩多少時間(請參閱本教程 )。 假設您使用的是SwingWorker ,則可以讓SwingWorker在完成處理后(在done方法中)調用JDialog的dispose方法。

您可以使用ProgressBar創建一個模態java.swing.JDialog

實際上,它比您想象的要容易。 要捕獲窗口關閉事件,您需要將addWindowListener(WindowListener wl)到有問題的JFrame中。 然后,您可以在所需的任何類中覆蓋WindowClose方法,從而可以相應地自定義功能。

我剛剛在此鏈接上找到了這個。

盡管給出的解決方案很干凈,但是它們效率不高,因為僅通過偵聽主JFrame,您將沒有機會將其用於其他關閉機制(請考慮命令行中的Alt+F4Ctrl-C和別的)。

在我看來,最好注冊一個關閉鈎子 ,該鈎子既顯示消息對話框,又執行關閉操作。 這樣,無論用戶選擇關閉應用程序的方式如何,所有關閉操作都將正確執行。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM