我有一個登錄屏幕的GUI。每當我按下登錄按鈕的用戶名和密碼是針對在線mysql數據庫中的條目進行檢查時,我從登錄按鈕的actionPerformed()方法中的數據庫中提取所有這些信息。問題是當程序從數據庫中提取數據時GUI凍結。我GOOGLE了我的問題,發現我應該使用SwingWorker,但作爲一個新手,我沒有得到如何使用SwingWorker爲我的目的。使用SwingWorker在後臺執行復雜的任務
1
A
回答
2
首先,在你的類聲明一個成員變量(它可能是在你的GUI類)SwingWorker
類型的這樣的:
private SwingWorker<Boolean, Void> backgroundProcess;
然後在初始化代碼中初始化變量(構造,昂秀方法事件處理等),就像這樣:
backgroundProcess = new SwingWorker<Boolean, Void>() {
@Override
protected Boolean doInBackground() throws Exception {
// paste the MySQL code stuff here
}
@Override
protected void done() {
// Process ended, mark some ended flag here
// or show result dialog, messageBox, etc
}
};
然後,在你actionPerfomed
方法,調用SwingWorker
的執行方法:
backgroundProcess.execute();
如果做得正確,則GUI不應該在按鈕按下事件
1
這個簡單的exampleextends SwingWorker<Icon, Void>
取Icon
與Void
中間結果。同樣,您可能會延伸SwingWorker<DataSource, Void>
以獲取DataSource
。
相關問題
- 1. 使用NSThread在後臺執行任務
- 2. 在後臺執行任務
- 3. SwingWorker任務執行()的奇怪結果
- 4. 重複執行SwingWorker
- 5. Android重複執行任務在後臺運行
- 6. 在後臺繼續執行任務
- 7. 在asp.net中執行後臺任務MVC4
- 8. JavaFX在後臺執行任務
- 9. 如何在後臺執行Android任務
- 10. 如何在後臺執行任務?
- 11. 在Android中重複執行後臺任務
- 12. UWP後臺任務未執行
- 13. 防止執行dispatch_after()後臺任務
- 14. 併發任務更新複雜對象JavaFX - swingworker等效?
- 15. 使用Resis和Redis來執行後臺任務的要點
- 16. 在iPhone上的應用程序中執行後臺任務
- 17. 執行2個同時使用jQuery和Ajax後臺任務
- 18. 在rails中立即並行執行的後臺任務
- 19. 使用AlarmManager執行重複任務
- 20. 使用IntentService執行重複任務
- 21. 延遲後在iOS上執行後臺任務
- 22. 什麼方法可用於在後臺執行任務
- 23. iOS應用程序在後臺執行任務
- 24. Android服務定期在後臺執行任務嗎?
- 25. 在後臺運行時每x秒重複執行一次任務
- 26. 在後臺運行一個任務並繼續執行
- 27. 需要幫助執行一個複雜的CoreData任務
- 28. 自動執行復雜的重構任務
- 29. 重複長時間運行的後臺任務在第一次後臺任務後沒有啓動計時器
- 30. 註銷用戶並執行後臺任務的腳本
+1有幫助的提綱,但我不明白使用'布爾'。 「連接」或「數據源」不會更合適。 – trashgod
真的很清楚答案。 +1。 – m4heshd