2013-07-22 86 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); 

和它的作品。感謝您指導我...