Java JTable 实现数据动态更新

    问题出现:
        设计局域网之间文件传输的软件的时候,想要动态更新用户列表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();
        }
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
实现 JTable 数据动态更新可以通过以下步骤完成: 1. 创建 JTable 对象并设置表格模型。 2. 创建一个数据模型并将其与表格模型绑定。 3. 创建一个数据源,可以是数据库或者其他数据来源。 4. 将数据源中的数据填充到数据模型中。 5. 将数据模型中的数据更新到表格模型中。 6. 调用 JTable 的 repaint() 方法刷新表格。 下面是一个简单的示例代码,演示了如何在 JTable实现数据动态更新: ```java import javax.swing.*; import javax.swing.table.DefaultTableModel; public class DynamicTableDemo extends JFrame { private DefaultTableModel model; private JTable table; public DynamicTableDemo() { // 创建表格模型 model = new DefaultTableModel(new String[]{"ID", "Name", "Age"}, 0); // 创建 JTable 并设置表格模型 table = new JTable(model); // 将 JTable 添加到窗口 add(new JScrollPane(table)); // 添加数据 addData(1, "Alice", 25); addData(2, "Bob", 30); addData(3, "Charlie", 35); // 设置窗口参数 setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setSize(400, 300); setLocationRelativeTo(null); setVisible(true); } private void addData(int id, String name, int age) { // 添加数据数据模型中 model.addRow(new Object[]{id, name, age}); // 刷新 JTable table.repaint(); } public static void main(String[] args) { new DynamicTableDemo(); } } ``` 在上面的示例中,我们创建了一个 JTable 并设置了表格模型。然后通过调用 addData() 方法向表格中添加数据。在 addData() 方法中,我们首先向数据模型中添加数据,然后调用 JTable 的 repaint() 方法刷新表格。这样就可以实现 JTable 数据动态更新了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值