2012-09-26 86 views
2

我正在構建即時消息應用程序。我需要在Swing JFrame(小「x」)的默認關閉按鈕上添加一個操作事件。
當客戶端按下X按鈕時,我需要告訴服務器他離線,只有在該動作發生之後,我必須關閉窗口。我似乎無法找到如何在默認按鈕上獲取動作偵聽器。在用戶按下之前在窗口關閉前執行某些操作[x]

+0

我有這種類型的問題只被要求在這裏百倍包括NetBeans的 –

+3

工作:JFrame中在關閉操作](http://stackoverflow.com/questions/10468149/jframe-on -close操作)。投票結束爲重複。 –

+0

關閉它,新手錯誤。謝謝! –

回答

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

聽起來像是你要撥打addWindowListenerWindowListener它處理windowClosingwindowClosed。您可能希望創建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)

相關問題