2013-07-22 48 views
0

我有一个表名jTable和AbstractTableModel MyModel;我可以成功地将抽象模型实现为jTable。当我使用Sql Query更新数据库时,按下窗体中的UPDATE按钮,我使用jTable.setModel(new MyModel())重新填充jTable,它工作正常。当数据库更新时更新JTable和AbstractTableModel

但我认为这不是明智的做法,它会是巨大的行数。每次更新或将记录插入数据库后,重新设置或重新填充表模型到jTable都不是有效的过程。我读了一些fireTableRowUpdated的听众......但我不明白它应该怎么写?因为我不先更新jTable。我正在更新数据库,然后我需要更新当前的AbstractTableModel以及我的jTable。

有没有人可以引导我到正确的路径..我如何设置一个监听器或调用一个方法,因此AbstractTableModel也会更新和更新jTable。我认为它不应该填充数据库表中的所有行。

+3

请参阅setValueAt(....),仅更新屏幕上可见的单元格,JViewport和JTables视图可以进行排序或过滤,注意任何需要阅读Oracle tutotial之前的内容。使用表 – mKorbel

+0

谢谢mKorbel。其实我读了oracle教程。我已经可以实现过滤和排序成功。我已经知道setValueAt()。但我不明白如何从jButton按下触发setValueAt!请考虑我是新的Java –

+0

一个jButton按下! ==最简单的方法应该是将所有数据从JDBC重新加载到XxxTableModel – mKorbel

回答

1

感谢所有发表意见的人。最后我可以想出答案。 我创造了我的AbstractTableModel的方法:

myObject rec = new myObject(); 

public void updateRow(Object value, int row){ 
     rec.set(row, value); 
     fireTableRowsUpdated(row, row); 
    } 

and in main class 

mymodel.updateRow(newvalueObject, rowindex); 

和它的作品。感谢您指导我...