当前位置: 首页 > 知识库问答 >
问题:

使用TableModel刷新JTable中的数据时出错

周浩博
2023-03-14

我正在尝试从 JTable 刷新数据。

此方法从数据库中选择数据:

public Object[][] getData() {
    Object[][] data = new Object[15][10];
    try {

        String query = "SELECT * from emailApp";
        rs = st.executeQuery(query);


        int i = 0;
        while (rs.next()) {
            int id = rs.getInt("id");
            int priority = rs.getInt("priority");
            String sender = rs.getString("sender");
            String recipient = rs.getString("recipient");
            String labelDb = rs.getString("label");
            String subject = rs.getString("subject");
            String message = rs.getString("message");


            data[i][0] = id;
            data[i][1] = sender;
            data[i][2] = priority;
            data[i][3] = recipient;
            data[i][4] = labelDb;
            data[i][5] = subject;
            data[i][6] = message;
            i++;

            if(i>15) break;

        }

    } catch(Exception ex) {
        System.out.println(ex);
    }

    return data;
}

然后我使用这个方法来刷新JTable中的数据:

public void setUpTableData() {
DefaultTableModel model = (DefaultTableModel) table.getModel();
DBConnect connect = new DBConnect();
Object[][] data = connect.getData();
Object[] modelData = new Object[15];

model.setRowCount(0);
for(int i = 0; i<15; i++) {
    if(data[i][0] == null) break;
    modelData[0] = data[i][0];
    modelData[1] = data[i][1];
    modelData[2] = data[i][2];
    modelData[3] = data[i][3];
    modelData[4] = data[i][4];
    modelData[5] = data[i][5];
    modelData[6] = data[i][6];

    model.addRow(data);
    }   

model.fireTableDataChanged();
table.setModel(model);
}

错误:线程“AWT-EventQueue-0”中的异常 java.lang.ClassCastException: javax.swing.JTable$1 无法强制转换为 javax.swing.table.DefaultTableModel

然后我按下一个按钮来调用这个方法。有人能告诉我我做错了什么吗。非常感谢。

共有1个答案

寿高阳
2023-03-14

所以,多亏了MadProgrammer,我想通并解决了这个问题(以防有人有同样的问题)

public void refreshData() {
    DBConnect connect = new DBConnect(); 
    Object[][] data = connect.getData(); // collecting the data from DataBase after inserting, updating
    DefaultTableModel model = new DefaultTableModel(data, columnNames);  // creating a new DefaultTableModel with the new data
    table.setModel(model); // setting the DefaultTableModel to the table - Refreshing the table
} 
 类似资料:
  • 问题内容: 你好 我已经创建了TableModel,并且想在添加新行后刷新JTable。应该向侦听器添加什么以“刷新” JTable? 这是我的“添加行”按钮的监听器: 我试图在我的actionPerformed()中使用AbstractTableModel的firetabledatachanged()方法,但运气不佳,出现了ClassCastException。 更新1 WorkPlaceGui

  • > 我创建了一个函数,在该函数中我创建了表 我创建了另一个函数,它将我的数据从arraylist发布到我的表中。 到现在为止一切都很好。当我试图更新我的时,问题就出现了。实际上,我打开一个并尝试在列表中添加一个新项。我开始使用新项修改,但之后无法更新表,例如,我真的不知道将放在哪里,以及如何在需要时调用它。 我已经在这个网站上看到了一些问题,但我尝试的没有一个真正适用于我的程序。谢谢你的帮助,对不

  • 问题内容: 我对/ 有问题。我的数据表未刷新/更新。我正在使用,根据代码,一切都很好,并且没有任何错误。我也有一个带有分页的表,这就是为什么我使用动作监听器和按钮“上一个”和“下一个”的原因。我正在从其他函数传递到在is中的类中编码的函数 。问题是我填充了包含表数据的数组,但是表不会更新/刷新它。这是我的代码。谢谢前进。 大编辑 旧代码已删除。我添加了新代码,可以帮助您了解我的问题。希望这会有所帮

  • 我试图使文档中的狗/品种示例适用于Neo4j持久性。数据库是正常创建的,但无法刷新数据,至少看起来是这样。我在em.flush()指令(在上面的DogBreedRunner.java类中)中得到错误org.neo4j.graphdb.NotInTransactionException。 我谷歌并搜索了这个问题,但真的无法绕过它。这是我的项目(我没有接触文档中的java类)。 有人能帮忙吗?如果需要

  • 我在更新/刷新表中的数据时遇到问题。我使用的是DefaultTableModel。以下是代码,请分享您的知识和建议。顺致敬意, *编辑1:*原始代码有一个更新表数据的函数,但事实证明这是错误的,因为构造函数一次又一次地创建新的JTable和新的JScrollPane。这就是为什么我创建了新的构造函数,并修复了这个bug。在我实现了新的构造函数之后,表数据仍然没有刷新。接下来,我尝试调试构造函数从另

  • 问题内容: 我在管理两个JTable和相关数据时遇到一些问题。 我做了这个GUI: 在此处输入图片说明 我解释一下用法:在第一个jTable中,我列出了车辆(卡车, 汽车……)和相关信息。在第二个jTable中 ,我按下 绿色箭头,列出了我要使其“可用”的车辆(即sw代理启动)。因此,是第一个列表的子列表:在第一个 表中选择的行将在第二个表中复制。 第一个问题:在第一列中,我有 车辆类型的说明图(