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

使用DefaultTableModel插入后未刷新JTable

沙小白
2023-03-14
public class GUIClients {

ClientDatabase cDB = new ClientDatabase();
DefaultTableModel tableModel = new DefaultTableModel();

JTable table = new JTable(tableModel);

JScrollPane scrollPane = new JScrollPane(table);
JPanel panel = new JPanel(new BorderLayout());

public JPanel createPanel() {
    cDB.createTable(tableModel);
    table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
    panel.add(scrollPane);
    panel.add(table, BorderLayout.CENTER);
    panel.add(table.getTableHeader(), BorderLayout.NORTH);
    ...
    return panel;
}
public class InsertDialog extends GUIClients {
...
saveB = new JButton("Save");
    saveB.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent e) {
            try {
                cl = cDB.getClient(InsertDialog.this);   
                cDB.insert(cl);

                tableModel.setRowCount(0);

                cDB.createTable(tableModel);
                table.setModel(tableModel);

                dialogPanel.dispose();
            } catch (SQLException ex) {
                System.out.println(ex.getMessage());
            }
        }
    });
dialogPanel.add(saveB);
...
public class ClientDatabase implements Database {

public static ResultSet rs;

public void createTable(DefaultTableModel d) {
    try {
        d.addColumn("ID");
        d.addColumn("Name");
        d.addColumn("Surname");
        d.addColumn("Mobile");
        d.addColumn("Email");
        d.addColumn("Notes");

        rs.beforeFirst();
        while (rs.next()) {
            int id = rs.getInt("ID");
            String name = rs.getString("NAME");
            String surname = rs.getString("SURNAME");
            String mobile = rs.getString("MOBILE");
            String email = rs.getString("EMAIL");
            String notes = rs.getString("NOTES");
            d.addRow(new Object[]{id, name, surname, mobile, email, notes});
        }

    } catch (SQLException e) {
        System.out.println(e.getMessage());
    }

}
...

共有1个答案

支才
2023-03-14

我有一个方法,它成功地插入一个新记录到我的数据库

然后您还负责同时将数据添加到TableModel中。

您可以使用DefaultTableModel的AddRow(...)InsertRow(..)方法更新TableModel中的日期,然后JTable将被更新。

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

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

  • 我正在开发一个带有NodeJs、Express、types cript和no清新的应用程序。 但是当我更改ts文件中的一些代码时,页面没有刷新。 如何在js中编译ts文件并使用no清新浏览器(或其他工具)? 包裹json 所以,每次我进行更改,我都需要停止服务器并重新运行npm start

  • 我不明白为什么我的没有更新。 下面是我的代码: 这是调用这些方法的main类的代码: 在中,在循环之后,我尝试过: .invalidate()方法在GUI的每个组件上(即使不推荐) GUI每个组件的 方法 方法(即使不推荐) 从方法中的2中,我可以看到填充了的行,但未显示它们。

  • 删除项目后,“我的回收器”视图未更新。此recyclerView位于片段内部。我试过各种方法,但都不管用。 片段类中的适配器声明 回收服务适配器: } 调试项目时,我可以看到该项实际上正在从ArrayList中删除。但不在循环视图中更新。 删除后,如果滚动回收站视图,则从回收站视图中删除已删除的项。但不是没有滚动。