<java><JTable>使用AbstractTableModel实现更新、删除、插入数据

<java><JTable>使用AbstractTableModel实现更新、删除、插入数据继上次JTable实现号码分布的博文之后,这次写一下关于JTable数据的更新、删除、插入吧。同样的,本文将以abstractTableModel为例,其他数据导入方式可以参考。主界面如下:数据从文件导入,首先是添加。添加的时候会弹出一个对话框,提示输入插入的相关信息,这里不做叙述。添加时,会判断期数对不对(即有无重复的期数),判断方式如下:

继上次JTable实现号码分布的博文之后,这次写一下关于JTable数据的更新、删除、插入吧。

同样的,本文将以abstractTableModel为例,其他数据导入方式可以参考。主界面如下:

<java><JTable>使用AbstractTableModel实现更新、删除、插入数据

数据从文件导入,首先是添加。添加的时候会弹出一个对话框,提示输入插入的相关信息,这里不做叙述。添加时,会判断期数对不对(即有无重复的期数),判断方式如下:

                                for(int i=0; i<histroyDataTableMode.getRowCount(); i++) {
                                    if(histroyDataTableMode.getValueAt(i, 0).equals(stageValue)) {
                                        JOptionPane.showMessageDialog(null, "期数不对:\n所插入的期数已经存在!");
                                        validInput = false;
                                        break;
                                    }
                                }

使用getValueAt获取第一列的值,与输入的stageValue作比较。然后showDialog即可。判断正确后,即写入文件,写入文件部分,,,以后再写吧。现在不高兴写,太累了, 大中午的想睡觉 – -! 文件写完后更新table,更新table如下:


  
  
  
  
// 在表中显示
AnalyseDataInfo dataToInsert = new AnalyseDataInfo();                                     dataToInsert.SetStage(stageValue);                                     for(int i=0; i<6; i++) {                                         dataToInsert.SetRedBall(i, redBallVale[i]);                                     }                                     dataToInsert.SetBlueBall(blueBallValue);                                     histroyDataTableMode.add(dataToInsert);

其中add方法为:

    public void add(AnalyseDataInfo data) {
        int index = stageDatas.size();
        stageDatas.add(data);
        fireTableRowsInserted(index, index);
    }

stageDatas为插入数据的一个全部变量链表,此处直接添加,然后fireTableRowsInserted即可。这是添加部分。


接下来是删除部分。删除部分大同小异,由于我是用AbstractTableModel,因此很简单的,在删除部分直接:

    public void delete(int stage) {
        for(int i=0; i<stageDatas.size(); i++) {
            int stageInList = stageDatas.get(i).GetStage();
            if(stage == stageInList) {
                stageDatas.remove(i);
                fireTableDataChanged();
                break;
            }
        }
    }

就大功告成。比较简单,嘿嘿。


最后便是更新数据了。更新数据也差不多,这里我提一下,在更新数据的过程中,一开始我直接使用的是AbstractTableModel的API:setValueAt更新,结果Table里面的数据死活不变,搞的我一开始是以为刷新不及时,然后尝遍各种刷新方法,什么repiant、updateUI、validate;也试过修改AbstractTableModel的各种fire,等等等等,各种蛋疼。结果到最后才发现原来是setValueAt这个API压根没起作用。气的我快疯了。setValueAt手册里描述如下:

setValueAt

public void setValueAt(Object aValue,
                       int rowIndex,
                       int columnIndex)
由于提供了此空实现,因此,如果用户的数据模型是不可编辑的,则他们不必实现此方法。 

哎,不靠谱啊不靠谱。后来尝试修改链表值才发现原来可以如此简单,也使我后面的添加操作,删除操作一气呵成,由此也发现AbstractTableModel的好处,嘿嘿。

总结,JTable只是一个显示内容的框体,正常幕后操作数据的,是实现的TableModel。


OK,本文到此结束。


今天的文章<java><JTable>使用AbstractTableModel实现更新、删除、插入数据分享到此就结束了,感谢您的阅读,如果确实帮到您,您可以动动手指转发给其他人。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/31370.html

(0)
编程小号编程小号

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注