2010-08-18 72 views
1

我有一個使用javax.swing.Timer運行的任務。它每隔幾分鐘執行一次。該任務需要一兩秒鐘,並且正在凍結我的GUI。Java javax.swing.Timer - 凍結我的GUI。解?

我能做些什麼來解決這個問題?

+0

你可以發佈代碼在哪裏創建定時器和任務本身? – stmi 2010-08-18 03:49:19

+0

定時器任務需要執行的第二個或第二個任務是凍結GUI嗎?還是完全鎖定了您的應用程序? – JCD 2010-08-18 04:10:30

+0

它只是掛了2秒,然後一切都很好..我應該啓動定時器回調函數的SwingWorker? – 2010-08-18 07:08:32

回答

2

計時器任務在事件分派線程上執行,所以當你的任務正在運行時,沒有其他的swing事件會發生,你的GUI會凍結。你應該爲這麼長的任務創建一個單獨的線程,或者使用SwingWorker。

有關更多詳細信息,請參閱this問題。

1

該任務可能需要更多的2秒..該任務是否需要訪問GUI?如果不使用單獨的線程。需要GUI訪問的任務的特定部分可以使用SwingWorker來更新GUI。