【发布时间】:2013-07-20 23:34:47
【问题描述】:
我有一个带有 AbstractTableModel MyModel 的表名 jTable;我可以成功地将抽象模型实现到 jTable。当我使用 Sql Query 更新数据库时,按表单中的 UPDATE 按钮,我使用 jTable.setModel(new MyModel()) 重新填充 jTable,它工作正常。
但我认为这不是明智的做法,因为它会出现大量行。每次更新或将记录插入数据库后,然后将表模型重新设置或重新填充到 jTable 都不是有效的过程。我读到了一些 fireTableRowUpdated 的听众……但我不明白它应该怎么写?因为我没有先更新jTable。我正在更新数据库,然后我需要更新当前的 AbstractTableModel 以及我的 jTable。
有没有人可以引导我找到正确的路径。我如何设置监听器或调用方法,因此 AbstractTableModel 也会更新和更新 jTable。而且我认为它不应该重新填充数据库表中的所有行。
【问题讨论】:
-
查看 setValueAt(....),仅更新屏幕上可见的单元格,在 JViewport 中,并且 JTables 视图可以排序或过滤,在阅读 Oracle tutotial 如何使用表之前注意任何事情
-
感谢 mKorbel。事实上,我阅读了 oracle 教程。我已经可以成功实现过滤和排序。我已经知道 setValueAt()。但我不明白如何从按下的 jButton 触发 setValueAt!请考虑我是 Java 新手
-
按下了一个 jButton! == 最简单的应该是从将所有数据从 JDBC 重新加载到 XxxTableModel 开始
-
@mKorbel:将 JDBC 重新加载到 xTableModel 可能是最简单的。但是如果有大量的行会发生什么。我认为每次加载大量行都是不明智的。虽然我可以使用 MyModel.setValueAt(myObject, xTable.getSelectedRow(), -1);但是 jTable 没有刷新...!
-
没有什么需要重新加载的。无论如何,数据已经加载到内存中。做最简单的事情,只有在真正存在问题时才进行优化。如果确实存在问题,请采取措施以了解问题的根源。