所以这就是事情。我的框架中有一个JTable
,显示一些可以编辑的数据。可以添加新行,可以删除旧行。
现在,如果我从填充了一些数据的表开始,它可以正常工作。我能够删除行,并且还会删除数据Vector<Vector>
中的行。但是,当我添加一行时,该行显示在我的表中,但更改未反映在数据中。
Vector<Object> newQuestion = new Vector<Object>(3, 1);
newQuestion.add(question.getText());
newQuestion.add(answer.getText());
newQuestion.add(false);
model.addRow(newQuestion); // Update the model with new question
model
是DefaultTableModel
。我尝试了model.fireTableDataChanged();
,尽管DTM本身就会触发它,但是这也不起作用。
任何指针?
编辑:有趣的是,如果我从表中的某些数据开始并添加一行,则更改也会反映在数据中。
编辑2 :https://github.com/thekarangoel/YALT/blob/master/src/editDB.java从第65行添加一行!尝试,编译,运行,文件&gt;添加新数据库。给个名字。添加新行。
编辑3 :对于此代码: System.out.println(“数据:”+数据); 矢量&GT; modelData = model.getDataVector(); System.out.println(“Data:”+ modelData);
我明白了:
Data: null
Data: [[w, a, false]]
来自我的Vector的第一个if数据。第二个是模型Vector中的数据。为什么会这样?当我向现有表添加内容时,文件行也会显示更改。
答案 0 :(得分:2)
了解如何创建数据:
public Vector<Vector<Object>> convertMapToVector(Map<String, String> quesToAnsMap) {
if (quesToAnsMap.size() > 0) {
// the data field is initialized here
data = new Vector<Vector<Object>>(quesToAnsMap.size(), 1);
...
return data;
}
// but not here
return new Vector<Vector<Object>>();
}
我建议使代码更健壮:
data
字段。它没有用,因为数据已包含在模型中。因此,要获取数据,您只需要从模型中获取数据。