The problem you are facing is related to how you are updating the table model when a row is deleted. Currently, your deleteSelectedRow button action listener updates the data in the database but doesn't trigger the table model to refresh. This is why the table still shows the deleted row.
To resolve this issue, you need to explicitly notify the table model that the data has changed. You can do this by calling the fireTableRowsDeleted() method of the TableModel interface whenever a row is deleted from the database. This will trigger the table model to update its internal data structures and refresh the table.
Here's an updated version of your code that includes the necessary change:
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()); } } });
By calling fireTableRowsDeleted(), you are instructing the table model to remove the specified row from its internal data structures and update the table accordingly. This will ensure that the GUI reflects the changes made to the underlying database.
The above is the detailed content of Why Doesn't My JTable Update After Deleting a Row from the Database?. For more information, please follow other related articles on the PHP Chinese website!