您的位置:首页 > 编程语言 > Java开发

Java JTable 实现数据动态更新

2012-11-13 19:07 453 查看
    问题出现:

        设计局域网之间文件传输的软件的时候,想要动态更新用户列表JTable中数据的内容;

    实现思想:

        每次用户列表数据更新的时候重新设置JTable中的数据,然后调用jtable.setUI()更新JTable控件的数据;

    注意问题:

        每次要先清空JTable中的数据,因为JTable中的数据就是userdata中的数据,而userdata的数据是通过add加进去的,所以之前的数据一直在;重新调用setUserTableData 的时候,是在JTable中添加数据;

        添加到userdata中的row要每次重新new,row代表的行;new一个新的row代表新增加一行,没有重新new那么row。add("数据")中的数据是加在每行的行尾,而不是新行;

    错误方式:

        public void setUserTableData() {

            //设置usertable数据;

            //((DefaultTableModel)usertable.getModel()).getDataVector().clear();

            //清空table的数据,重新写入;

            Vector<String> row = new Vector<String>(); //错误

            for(int i = 0;i < userList.size(); i++){

                row.add(userList.get(i));

                userdata.add(row);

            }

            Vector<String> title = new Vector<String>();

            title.add("在线用户列表");

            dtmView = new DefaultTableModel(userdata, title);

            this.usertable.setModel(dtmView);

            jth = this.usertable.getTableHeader();

        }

正确方式:
public void setUserTableData() {

            //设置usertable数据;

            ((DefaultTableModel)usertable.getModel()).getDataVector().clear();

            //清空table的数据,重新写入;

            Vector<String> row = null;

            for(int i = 0;i < userList.size(); i++){

                row = new Vector<String>(); 

                row.add(userList.get(i));

                userdata.add(row); // 添加数据到userdata中

            }

            Vector<String> title = new Vector<String>();

            title.add("在线用户列表");

            dtmView = new DefaultTableModel(userdata, title); //添加userdata到JTable中

            this.usertable.setModel(dtmView);

            jth = this.usertable.getTableHeader();

        }
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: