我正在做一個Swing應用程序,在其中一種形式中,我有一個我想定期更新的表。我首先想到了使用Timer
,但這個任務可能很耗時,並且可能會凍結GUI。然後,我想到了使用SwingWorker
,但它被設計爲執行一次,並且我需要在表單打開時定期執行此任務(每兩三分鐘)。使用線程實現刷新表
在這種形式的代碼,我已經實現了三種方法:acceptNew()
,運行快速更新查詢,listRequests()
,運行一些查詢的所有記錄,以填補ArrayList
;和manipulateTable()
,它將表模型與ArrayList進行比較並更新/插入記錄。
簡而言之,acceptNew()
執行快速任務,listRequests()
執行另一個任務,其完成時間取決於DB中的記錄數,manipulateTable()
更新GUI。我需要定期調用這三種方法而不凍結GUI。
1.請whats,在哪裏以及爲什麼要調用'myTimer - > myVoid'和'mySwingWorker - > myVoid'之間存在差異,2.很快所有更新都應在'XxxTableModel'和'myModel.add/insert/updateRow'應該被包裝在'invokeLater'裏面,3.投票關閉的太寬泛了(關於OPs努力的噸帖子 - 以SSCCE/MCVE形式的代碼) – mKorbel
你可以使用多線程來存檔這個文件,但是你必須小心執行命令使用同步塊.. [示例](http://www.vogella.com/tutorials/JavaConcurrency/article.html) – Ragu