2014-05-06 38 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

相关问题