首页  >  文章  >  Java  >  为什么从数据库中删除行后我的 JTable 没有更新?

为什么从数据库中删除行后我的 JTable 没有更新?

Barbara Streisand
Barbara Streisand原创
2024-11-16 11:48:03573浏览

Why Doesn't My JTable Update After Deleting a Row from the Database?

AbstractTableModel GUI 显示问题

您面临的问题与删除行时更新表模型的方式有关。目前,您的deleteSelectedRow 按钮操作侦听器会更新数据库中的数据,但不会触发表模型刷新。这就是为什么表仍然显示已删除的行。

如何解决该问题?

要解决此问题,您需要显式通知表模型数据已更改。每当从数据库中删除一行时,您可以通过调用 TableModel 接口的 fireTableRowsDeleted() 方法来完成此操作。这将触发表模型更新其内部数据结构并刷新表。

这是代码的更新版本,其中包括必要的更改:

delete.addActionListener(new ActionListener() {

    @Override
    public void actionPerformed(ActionEvent e) {

        int rowIndex = table.getSelectedRow();

        Object columnIndexValue = table.getModel().getValueAt(rowIndex, 0);

        String columnName = table.getModel().getColumnName(0);

        String query = "delete from world.city" + " where " + columnName + "=" + columnIndexValue;

        try {

            PreparedStatement pre = conn.prepareStatement(query);

            pre.executeUpdate();

            JOptionPane.showMessageDialog(null, "Row Deleted Successfully");
            
            // Notify the table model that the data has changed
            ((TableModel) table.getModel()).fireTableRowsDeleted(rowIndex, rowIndex);

        } catch (Exception e1) {
            JOptionPane.showMessageDialog(null, e1.getMessage());
        }

    }

});

通过调用 fireTableRowsDeleted() ,您指示表模型从其内部数据结构中删除指定的行并相应地更新表。这将确保 GUI 反映对底层数据库所做的更改。

以上是为什么从数据库中删除行后我的 JTable 没有更新?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn