Java 如何在添加新条目后刷新JTable
我从数据结构Java 如何在添加新条目后刷新JTable,java,swing,jtable,Java,Swing,Jtable,我从数据结构列表中填充了一个JTable。我还有一个按钮“创建新字段”,用于在列表中创建新条目。我可以将新条目添加到列表,但是我不知道在添加新条目后如何刷新JTable。您必须使用tableModel.fireTableDataChanged()。或者如果表中只更新了很小的一部分(即一个单元格):tableModel.fireTableCellUpdated(x,y) 根据注释,您需要编写自己的小型TableModel 源自AbstractTableModel 将列表传递给表mdoel的构造函
列表中填充了一个JTable
。我还有一个按钮“创建新字段”,用于在列表中创建新条目。我可以将新条目添加到列表
,但是我不知道在添加新条目后如何刷新JTable
。您必须使用tableModel.fireTableDataChanged()
。或者如果表中只更新了很小的一部分(即一个单元格):tableModel.fireTableCellUpdated(x,y)
根据注释,您需要编写自己的小型TableModel
- 源自
AbstractTableModel
- 将列表传递给表mdoel的构造函数
- 相应地实施所需的方法
- getRowCount返回
list.size()
- getColumnCount返回1
- getValueAt返回列表项(行)
fireTableDataChanged()
使用观察者模式
您的表模型应该是列表的观察者。因此,当您列出数据更改时,表格将被更新。1.我创建了一个新项目,选择了一个新框架,并将表格、标签、文本字段和按钮从swing控件拖动到您的框架中 2.在后端创建一个表 3.从此链接下载rs2xml jar文件 将其添加到项目库中 4.然后连接MySQL 5.然后使用以下代码创建更新函数类型
rs=statement.executeQuery("select * from details");
jTable1.setModel(DbUtils.resultSetToTableModel(rs));
6.在按钮操作事件中,键入以下内容并调用更新功能
Object name=jTextField1.getText();
String sql="insert into details (name) values('"+name+"')";
int resultset=statement.executeUpdate(sql);
您可以按照本教程进行操作:---
我编写了这段代码,但它不起作用:tableModel=new DefaultTableModel(数据、列名);table=新的JTable(tableModel);addNewFieldToData();tableModel.fireTableDataChanged();好的,看起来您没有将数据添加到表模型中,而是添加到您的
列表中。我想这不是最好的办法。您可以使用observer模式(这里没有太多帮助),也可以在每次列表更改后从列表中重新填充表模型。最好将数据添加到表格模型,而不是列表
,或者编写您自己的表格模型。您能提供一个简短的草图吗?在这种情况下,最好如上所述编写您自己的小表格模型。然后,您只需将数据添加到列表中,并相应地使用fire*()-方法。@klausklausos观察者模式
此解决方案是一种观察者模式,如果您使用默认表模型,则只需使用addRow
方法,这将通知侦听器。如果使用AbstractTableModel
的实现,那么如果插入行,则必须使用fireTableRowsUpdated
如果仅更改单元格fireTableCellUpdated`等等。。有关更多信息,您使用的是自定义的TableModel
实现还是默认的DefaultTableModel
?@Klausos-Klausos这种性质的问题经常被问到,默认情况下是关闭的主题,在这里搜索是否有问题这不是很有用。。列表没有实现任何类型的观察者模式
,因此必须创建一个包含列表的包装器类。。换句话说,这就是tableModel