2011-12-12 65 views
3

我對Java很新,所以我很抱歉這個初學者問題。避免在JButton上執行操作後凍結

我有一個JButton,當我點擊它時,會觸發幾個MySQL查詢並在顯示屏上顯示一些需要2到3秒的更新。在此期間,我的用戶界面完全凍結。有沒有辦法避免這種情況? 也許我應該使用像synchronized,thread或runnable之類的東西,但我不太明白。 有人可以解釋我嗎?

非常感謝。

問候。

文森特

回答

2

因爲你是同一個線程在用戶界面上執行查詢,該線程無法在此期間收到任何用戶的命令,因此「凍結」。

解決方案是啓動一個新線程並執行查詢並使用類似於SwingUtilities.invokeLater來更新UI。喜歡的東西:直到UI線程上的所有等待事件已處理

// button action listener code 

Thread t = new Thread(new Runnable() { 
    public void run() { 

     // execute query here 

     SwingUtilities.invokeLater(new Runnable() { 
      public void run() { 

       // update the ui here 

      } 
     }); 
    } 
}); 
t.start(); 

SwingUtilities.invokeLater有效地排隊更新操作。閱讀javadoc here

相關問題