Java DefaultTableModel-删除行更新向量,不添加
事情是这样的。我的框架中有一个Java DefaultTableModel-删除行更新向量,不添加,java,vector,jtable,defaulttablemodel,Java,Vector,Jtable,Defaulttablemodel,事情是这样的。我的框架中有一个JTable,显示一些可以编辑的数据。可以添加新行,也可以删除旧行 现在,如果我从一个填充了一些数据的表开始,它工作得很好。我可以删除行,这也可以从我的数据Vector中删除行。但是,当我添加一行时,该行会显示在我的表中,但更改不会反映在数据中 Vector<Object> newQuestion = new Vector<Object>(3, 1); newQuestion.add(question.getText()); newQuest
JTable
,显示一些可以编辑的数据。可以添加新行,也可以删除旧行
现在,如果我从一个填充了一些数据的表开始,它工作得很好。我可以删除行,这也可以从我的数据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
来自向量的第一个if数据。第二个是“模型”向量中的数据。为什么会这样?当我向现有表中添加某些内容时,文件行也会显示更改。看看如何创建数据:
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>>();
}
public Vector convertMapToVector(Map quesToAnsMap){
if(quesToAnsMap.size()>0){
//数据字段在此初始化
数据=新向量(quesToAnsMap.size(),1);
...
返回数据;
}
//但不是在这里
返回新向量();
}
我的建议是使代码更加健壮:
- 不要使用
字段。因为数据已经包含在模型中,所以它没有用处。因此,要获取数据,只需从模型中获取数据数据
- 要么让您的所有方法都接受参数和返回值,要么不接受任何内容,返回void,并初始化字段,但混合使用这两种方法会令人困惑。上面的方法初始化一个字段并返回它,但是else子句只返回它而不初始化它
NullPointerException
。代码高度依赖于我的其他类,因此很遗憾,我无法提供SSCCE。您提供的代码正在运行,因为数据显示在表中。你为什么不给我们看那些不需要的代码?NullPointerException附带堆栈跟踪、文件名和行号,因此您应该能够轻松识别非工作代码的位置以及问题所在。您是否尝试过在通过model
将行添加到JTable
后打印model
的数据?@jbnize是,当我尝试将数据写入文件时会引发异常,因为数据为null。是的,我尝试在添加每一行后打印向量
,但它只是空的。啊哈。。接球不错,先生!这就解决了!我仍然需要清理大部分代码,这只是一个原型。但谢谢你的建议。:)
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>>();
}