2014-05-06 29 views
0

我想刷新一個JTable後執行數據庫操作,如插入/更新/刪除沒有幀重新加載。有沒有一個程序化的解決方案來做到這一點?如何刷新數據庫操作後無需重新加載的JTable?

+1

你可以,更換一個新的代表表的當前狀態'TableModel'相關的JTable。當操作完成,插入,更新或刪除行時,您可以更新現有的「TableModel」。 – MadProgrammer

+0

您可以通過擴展'AbstractTableModel'並使用'fileTableXXXUpdated'方法創建自己的'TableModel',同時更改數據以便重新渲染表的位。如果表格很大,這是刷新單個單元格的最有效的方法。 –

回答

3

答案取決於您使用的是什麼類型的TableModel ......以及事件發生的級別。

舉例來說,如果你有某種背景Thread或「更新」按鈕,並希望重新從數據庫中的內容的基礎上,從數據庫中結果簡單的創建一個新的TableModel並將其應用到當前JTable,這將自動更新視圖。

如果您在應用程序中執行數據庫操作(添加,更新,刪除行),您可以向TableModel提供某種通知,並簡單更新其內容。

例如DefaultTableModel提供了addRow,insertRow,removeRow方法。 TableModel還提供了setValueAt它允許您更改給定單元格的值。

所有這些方法提供通知發回,該模型與自動

+0

就可以了: ) –

-2

您應該使用jtable.getViewport().removeAll(),然後再次使用從數據庫收集的所有數據重新填充它。

+2

爲什麼不重新構建/重新填充模型 – MadProgrammer

+0

爲什麼downvote?這不是一個解決方案!!,它可能不是最好的,但它是保留一個替代 –

+1

不是downvoter,但我的猜測是因爲1-它違背了API的MVC性質穀物和2-過度低效...只是說......作爲一個猜測 – MadProgrammer

相關問題