3
我對Java很新,所以我很抱歉這個初學者問題。避免在JButton上執行操作後凍結
我有一個JButton,當我點擊它時,會觸發幾個MySQL查詢並在顯示屏上顯示一些需要2到3秒的更新。在此期間,我的用戶界面完全凍結。有沒有辦法避免這種情況? 也許我應該使用像synchronized,thread或runnable之類的東西,但我不太明白。 有人可以解釋我嗎?
非常感謝。
問候。
文森特
我對Java很新,所以我很抱歉這個初學者問題。避免在JButton上執行操作後凍結
我有一個JButton,當我點擊它時,會觸發幾個MySQL查詢並在顯示屏上顯示一些需要2到3秒的更新。在此期間,我的用戶界面完全凍結。有沒有辦法避免這種情況? 也許我應該使用像synchronized,thread或runnable之類的東西,但我不太明白。 有人可以解釋我嗎?
非常感謝。
問候。
文森特
因爲你是同一個線程在用戶界面上執行查詢,該線程無法在此期間收到任何用戶的命令,因此「凍結」。
解決方案是啓動一個新線程並執行查詢並使用類似於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。