2011-10-30 85 views
3

如何模擬長時間運行的數據庫操作?我的要求是顯示一個JProgressBar對話框,直到操作完成。模擬長時間運行的操作

+0

您可以在任何方法內使用'Thread.sleep(millis)'來模擬長時間運行的過程。是不是那麼簡單:-) – home

+5

@home,並不那麼簡單。你不能在美國東部時間睡覺。 – mre

+1

你的意思是?:http://stackoverflow.com/questions/1389586/simulation-of-long-running-oracle-db-query –

回答

6

使用後臺線程(例如由SwingWorker提供的後臺線程)來運行循環內的Thread.sleep從1到10的for循環。那麼如果它是一個確定模式的JProgressBar,你可以通過將10 *循環索引傳遞給進度條來更新它的值(當然,在Swing線程上EDT需要小心)。

編輯:
@詹姆斯Poulson芯片:如果您使用的是的SwingWorker對象,您會使用publish/process方法和done方法對EDT更新。如果你使用自己的後臺線程,你肯定會將任何一組Swing調用包裝在Runnable中,並使用invokeLater將它放在EDT上。

+0

+1在工作人員的後臺線程上睡覺以模擬延遲是完全可以的,如[這裏]所示(http://stackoverflow.com/questions/4637215/can-a-progress-bar-be-used-in-a -class-外主/ 4637725#4637725)。 – trashgod

+0

@HovercraftFullOfEels謝謝你的回答。不得不問,我如何確保在EDT上更新組件?我使用invokeLater嗎? –

+2

@JamesPoulson:請參閱編輯我的答案。 –