2015-04-01 82 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是一个布尔值,以检查是否我已经用我的表中的另一模式。如果是这样,我将表中的数据添加到以前的模型中,然后将该模型引用到我的表中。现在我可以添加到该模型。