2个回答
展开全部
你很厉害自己已经发现了问题了并且解决了问题~
简单回答: 问题主要出现在DictTableModel 类里的setData方法里
public void setData(List<Word> listb) {//因为构造方法里传入了dic就有了单词列表,getValueAt方法也是直接从dic里获取单词列表进行更新的,所有参数可以不要,也可以在传参时填个null
fireTableDataChanged();//更新数据
}
删除的事件处理做如下的修改:
public void actionPerformed(ActionEvent arg0) {
//找到要删除的单词的行数
int row = table.getSelectedRow();// 获取选中的行号
//删除操作
if (row == -1) {
JOptionPane.showMessageDialog(null, "无此单词");
} else {
String eWord = table.getValueAt(row, 0).toString();// ?
String cWord = table.getValueAt(row, 1).toString();// ?
y.getWordList().remove(new Word(eWord, cWord));
dataModel.setData(y.getWordList());// 主要是让JTable更新
JOptionPane.showMessageDialog(null, eWord+"删除成功");
}
}
y.getWordList().remove(new Word(eWord, cWord))
面向对象一般还需要重写equals方法 . 这样删除对象的时候,方便点
说明
其实setData() 理论上这个方法,应该是传入一个新的单词链表,然后刷新的,所以之前的代码加入了删除列表,更新显示,然后添加新列表. 然后再次更新显示.
但是因为在DictTableModel构造方法里,已经传入了dic对象. 更新数据时,也是直接获取列表的 dic.getWordList() 所以setData()感觉就只剩一个更新的功能了
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询