Java 如何在不重新加载帧的情况下在数据库操作后刷新JTable?

Java 如何在不重新加载帧的情况下在数据库操作后刷新JTable?,java,swing,user-interface,jtable,tablemodel,Java,Swing,User Interface,Jtable,Tablemodel,在执行诸如插入/更新/删除之类的db操作后,我想在不重新加载帧的情况下刷新JTable。是否有一个编程解决方案可以这样做?您应该使用jtable.getViewport().removeAll(),然后用从数据库收集的所有数据重新填充它。答案取决于您使用的表格模型的类型以及事件发生的级别 例如,如果您有某种背景线程或“更新”按钮,并希望从数据库重新加载内容,只需根据数据库的结果创建一个新的表格模型,并将其应用于当前的JTable,即可自动更新视图 如果在应用程序中执行数据库操作(添加、更新、删除

在执行诸如插入/更新/删除之类的db操作后,我想在不重新加载帧的情况下刷新
JTable
。是否有一个编程解决方案可以这样做?

您应该使用
jtable.getViewport().removeAll()
,然后用从数据库收集的所有数据重新填充它。

答案取决于您使用的
表格模型的类型以及事件发生的级别

例如,如果您有某种背景
线程
或“更新”按钮,并希望从数据库重新加载内容,只需根据数据库的结果创建一个新的
表格模型
,并将其应用于当前的
JTable
,即可自动更新视图

如果在应用程序中执行数据库操作(添加、更新、删除行),则可以向
TableModel
提供某种通知,只需更新其内容即可

例如,提供了
addRow
insertRow
removeRow
方法
TableModel
还提供了
setValueAt
,允许您更改给定单元格的值


所有这些方法都会向
JTable
返回通知,通知模型自动关联

您可以用表示表当前状态的新模型替换
TableModel
。操作完成后,您可以更新现有的
TableModel
,插入、更新或删除行。您可以通过扩展
AbstractTableModel
来创建自己的
TableModel
,并在更改数据时使用
fileTableXXXUpdated
方法来重新呈现表位。如果表格很大,这是最有效的方法,因为您可以刷新单个单元格。为什么不重新构建/重新填充模型?为什么是向下投票?这不是一个解决办法吗!!,它可能不是最好的,但它仍然是一个替代品,而不是反对者,但我的猜测是因为1-这与API的MVC本质背道而驰,2-效率太低了…只是说…作为一个整体guess@MadProgrammer啊哈,也许是的,但是你能说一下,这怎么会违背API的MVC特性呢?你已经删除了视图,希望重新创建它,而不是简单地更改模型,这样(通常)会更高效、更简单,并实现OP想要的。如果OP突然想要显示来自一个全新表/查询的内容,或者只是刷新当前表/查询,这都无关紧要,他们只需要更新模型,视图就会随之更新