我有一個jTable和一個jButton。單擊時,按鈕的actionPerformed方法將調用另一個包含while循環的方法,並在每次通過循環時向表的模型(DefaultTableModel)添加一行。 while循環可以運行幾分鐘,所以我希望它在GUI中顯示每次添加到表中的行,一個接一個。然而,現在它在循環結束後將所有行一起添加到表中,因此在幾分鐘的時間內逐個遞增行數,而不是從顯示具有0行的表的幾分鐘到然後立即擁有數千人。我已經嘗試調用updateUI,在表格上重新繪製等,以及在模型上調用fireTabledDataChanged等,但沒有任何區別。我也嘗試過使用Swing Timer但無濟於事。我會很感激提供的任何幫助或指導,謝謝。向jTable中添加一行,每次通過一個循環?
1
A
回答
3
下降到EDT一個Runnable
履行addRow
電話從Swing閱讀節關於Concurrency的教程,更詳細地解釋了EDT如何工作。除了創建自己的線程並使用SwingUtilties.invokeLater()之外,還可以使用更新的使用SwingWorker的方法。本教程包含一個示例。
我已經打過電話updateUI,
決不做這樣的事情。即使它解決了你的問題,但這是錯誤的解決方案。您不更新UI,您正在更新組件。
1
如果您使用的是DefaultTableModel
,則在每次迭代期間在模型上調用addRow
應更新模型,然後應更新JTable
。該表將要求重新粉刷,並且該請求將在美國東部時間發佈。不幸的是,您的長期運行流程阻止了在美國東區執行處理的其他請求。爲你做的最好的事情是有你的按鈕,在工作線程觸發過程,然後該線程可能在這被通過SwingUtilities.invokeLater
相關問題
- 1. Java while循環跳過行,每2個循環做一次
- 2. 運行一個循環,每次一個點添加到一個ArrayList(Java)的
- 3. 循環通過記錄和添加每一行的解釋
- 4. 向JTable添加加載循環
- 5. 向JTable添加一個新行
- 6. 循環通過一個XML並添加到一個gridview
- 7. 通過循環向TableLayoutPanel添加列表
- 8. 循環:每三次迭代添加一個html
- 9. 每秒運行一次循環sleep_for
- 10. 的JQuery循環通過每個錶行
- 11. 通過行循環和添加值
- 12. 將行添加到表中,循環一個數組,執行瘋狂的事情,每次都讀第一行
- 13. PHP的foreach循環只增加一次每隔一個迭代
- 14. 在while循環中的每一行的末尾添加一個字符
- 15. 部分代碼只在第一次循環中通過python for循環運行
- 16. 循環通過文本,並把每一行陣列中的PHP
- 17. 向xaml中的每一行添加EventToCommand
- 18. vb.net通過數據行循環並將每個值添加到列表框中
- 19. PHP - 每4次向div循環添加div
- 20. 在for循環中每x次運行一次異步
- 21. PHP循環,在除最後一個循環以外的每個循環之後添加一個逗號
- 22. 如何將每一行添加到循環中的前一行R
- 23. 將forEach循環中的每個數組添加到一起javascript?
- 24. 向ListCtrl中的每一行添加一個按鈕WxPython
- 25. 嵌套循環在java中添加第一個條目兩次
- 26. 通過一個添加一個類,每個類1秒
- 27. 添加一個對應於每個循環的循環變量的變量
- 28. 循環只運行一次
- 29. foreach循環運行一次
- 30. 一次輸出一個循環而不是一次輸出一個循環?
當我看到你發佈你的答案時,我的答案應該幾乎完全一樣:) - 所以我只是給你+1 – 2010-02-26 20:04:07