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