2015-04-01 79 views
0

我有一個JTable中這樣定義:如何使用DbUtils.resultSetToTableModel填充數據後向JTable添加行?

public JTable table_1; 
model_3 = new DefaultTableModel(); 
table_1 = new JTable(model_3); 
scrollPane_5.setViewportView(table_1); 

添加一行:

model_3.addRow(new Object[]{table.getValueAt(row,0) , table.getValueAt(row,1) ,table.getValueAt(row,2) , commentFood }); 

刪除行:

model_3.removeRow(row); //row is an integer 

直到這裏,它用於正常工作。正如你可以看到這個表被定義爲公共,因爲有時我需要用這種方式從其他的JFrame填滿它:

takeOrder to = new takeOrder(); 
//Get data from DB to resultSet 
to.table_1.setModel(DbUtils.resultSetToTableModel(resultSet)); 

如果我填了表,這種方式並嘗試添加或刪除我的model_3,不起作用!任何建議,如何在使用DbUtils.resultSetToTableModel(resultSet)後添加或刪除表格將不勝感激。

+0

想想這個,'model_3'與'JTable#getModel'有什麼關係?一旦你調用了'setModel',你改變了表格用於'TableModel'的對象的引用,它不再指向'model_3' ... – MadProgrammer 2015-04-01 06:09:29

+0

@MadProgrammer你是對的。但無論如何,在將模型設置爲DbUtils.resultSetToTableModel(resultSet)之後,向表中添加或刪除行? – Bernard 2015-04-01 06:11:31

+0

它將取決於'DbUtils'的'TableModel'的類型。由於我沒有該API的JavaDocs,所以我不能說 – MadProgrammer 2015-04-01 06:14:22

回答

0

因爲我在互聯網上找不到任何信息,我看到幾個人問同樣的問題,沒有回答。我想出了這個解決方案:

if (formOut) { 
    for (int i = 0; i < table_1.getRowCount(); i++) { 
     model_3.addRow(new Object[]{table_1.getValueAt(i,0), 
      table_1.getValueAt(i, 1), table_1.getValueAt(i, 2)}); 
    } 
} 

formOut = false; 
table_1.setModel(model_3); 

fromOut是一個布爾值,以檢查是否我已經用我的表中的另一模式。如果是這樣,我將表中的數據添加到以前的模型中,然後將該模型引用到我的表中。現在我可以添加到該模型。