我正在構建即時消息應用程序。我需要在Swing JFrame(小「x」)的默認關閉按鈕上添加一個操作事件。
當客戶端按下X按鈕時,我需要告訴服務器他離線,只有在該動作發生之後,我必須關閉窗口。我似乎無法找到如何在默認按鈕上獲取動作偵聽器。在用戶按下之前在窗口關閉前執行某些操作[x]
2
A
回答
6
看看這個可能它可以幫助你。 Closing an Application
如果有人按下關閉按鈕,您可以自行實施。
frame.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
frame.addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent e)
{
// Here you can give your own implementation according to you.
}
});
+0
我很接近,我只是寫了一個新的windowAdapter而沒有添加它。我沒有意識到,謝謝! –
3
簡單add一個WindowListener到你的JFrame和使用事件windowClosing
3
聽起來像是你要撥打addWindowListener
與WindowListener
它處理windowClosing
或windowClosed
。您可能希望創建WindowAdapter
的子類,以便您可以覆蓋您感興趣的方法。
不要忘記您與服務器的通信應該在不同的線程中 - 不要用網絡流量阻止UI線程。但是,還要記住,如果你的整個應用程序關閉:
- 到服務器的任何連接無論如何都會關閉
- 任何背景線程將被終止
3
JFrame f = new JFrame("Blah");
f.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
//do whatever you want before the window closes.
}
});
f.setVisible(true);
別t做f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
,因爲這可能會中斷您的服務器通信。相反,在完成服務器通信後手動說出System.exit(0)
。
5
查看Runtime.addShutdownHook()方法。 http://docs.oracle.com/javase/6/docs/api/java/lang/Runtime.html#addShutdownHook%28java.lang.Thread%29
相關問題
- 1. 關閉計算機並使用BASH之前執行某些操作
- 2. 在JFrame上單擊關閉按鈕時執行某些操作
- 3. cherrypy,在每個請求之前自動執行某些操作
- 4. 在JFrame最小化之前可以執行某些操作嗎?
- 5. 在[super init]之前執行某些操作objective-c
- 6. 關閉窗口後執行操作
- 7. 有沒有辦法讓窗口關閉按鈕(X)在實際關閉窗口之前調用方法?
- 8. 在WCF服務關閉之前執行操作
- 9. JavaScript使用戶在執行下一個操作之前單擊
- 10. Angular 2在用戶關閉窗口之前調用http
- 11. Java-在關閉Java窗口之前單擊按鈕時執行bat文件
- 12. 如何在用戶關閉窗口之前檢測到修改
- 13. 如何讓表單中的提交按鈕在執行表單操作之前執行某些操作
- 14. 如何防止父窗口關閉之前關閉子窗口
- 15. 在用戶關閉標籤頁/窗口之前做一些事情
- 16. 如何在Safari關閉之前捕捉窗口關閉?
- 17. PowerShell窗口關閉操作'x'
- 18. 如何在Javafx關閉時執行某些操作?
- 19. FORM1在FORM2關閉時執行某些操作
- 20. C#在執行某些操作之前檢查COM對象是否可用
- 21. 關閉窗口之前顯示提示
- 22. 在symfony2中執行操作之前
- 23. 單擊按鈕,打開窗體,關閉窗體,然後在父窗體中執行某些操作
- 24. 用窗口'X'按鈕關閉窗體
- 25. 在運行下一個操作之前進行x秒睡眠
- 26. 在另一個窗口上執行某些操作後更新wpf父窗口
- 27. 如何在gwt應用程序重新啓動/關閉之前執行操作?
- 28. WPF AttachedProperty關閉窗口並在ViewModel中對其執行操作
- 29. 在關閉子窗口後執行操作extjs
- 30. MeteorJS在窗口關閉時執行操作
我有這種類型的問題只被要求在這裏百倍包括NetBeans的 –
工作:JFrame中在關閉操作](http://stackoverflow.com/questions/10468149/jframe-on -close操作)。投票結束爲重複。 –
關閉它,新手錯誤。謝謝! –