java,修改bug

英汉小词典删除功能出现问题... 英汉小词典删除功能出现问题 展开
 我来答
雪飞潇潇
2018-02-24 · TA获得超过6274个赞
知道大有可为答主
回答量:1968
采纳率:91%
帮助的人:861万
展开全部

你很厉害自己已经发现了问题了并且解决了问题~

简单回答: 问题主要出现在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()感觉就只剩一个更新的功能了

帐号已注销
2018-02-24 · TA获得超过126个赞
知道答主
回答量:299
采纳率:11%
帮助的人:32.1万
展开全部
这个好弄 真好弄
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式