我有一個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. 在一個循環中向jTable添加行和列
- 2. 循環每隔一行跳過一次?
- 3. Java while循環跳過行,每2個循環做一次
- 4. 運行一個循環,每次一個點添加到一個ArrayList(Java)的
- 5. 循環通過記錄和添加每一行的解釋
- 6. 向JTable添加加載循環
- 7. 向JTable添加一個新行
- 8. 在每個循環內追加一次
- 9. 循環通過一個XML並添加到一個gridview
- 10. 通過循環向TableLayoutPanel添加列表
- 11. 如何在foreach/for循環中每次添加超過1個?
- 12. 循環:每三次迭代添加一個html
- 13. 每次通過jquery添加一個類後4次翻譯
- 14. 如何在for循環中每3次添加一個換行符
- 15. 向jtable添加一行數據
- 16. 向(foreach)循環中的第一個div添加一個類
- 17. 使用循環將行添加到JTable
- 18. PHP循環通過一個FOREACH循環
- 19. 每秒運行一次循環sleep_for
- 20. 在一個循環的第一次迭代中添加類
- 21. 通過一個循環
- 22. 添加一個JButton向JTable細胞
- 23. 的JQuery循環通過每個錶行
- 24. 添加一個變量,每次運行循環時都應該更新Java
- 25. 通過每一列循環IF聲明
- 26. 通過For循環添加表格行
- 27. 通過行循環和添加值
- 28. For循環不僅通過一次
- 29. 通過循環添加JPanels
- 30. 將行添加到表中,循環一個數組,執行瘋狂的事情,每次都讀第一行
當我看到你發佈你的答案時,我的答案應該幾乎完全一樣:) - 所以我只是給你+1 – 2010-02-26 20:04:07