Das Problem, mit dem Sie konfrontiert sind, hängt damit zusammen, wie Sie das Tabellenmodell aktualisieren, wenn eine Zeile gelöscht wird. Derzeit aktualisiert Ihr Listener für die Schaltflächenaktion „deleteSelectedRow“ die Daten in der Datenbank, löst jedoch keine Aktualisierung des Tabellenmodells aus. Aus diesem Grund wird in der Tabelle weiterhin die gelöschte Zeile angezeigt.
Um dieses Problem zu beheben, müssen Sie das Tabellenmodell explizit darüber informieren, dass sich die Daten geändert haben. Sie können dies tun, indem Sie die Methode fireTableRowsDeleted() der TableModel-Schnittstelle immer dann aufrufen, wenn eine Zeile aus der Datenbank gelöscht wird. Dadurch wird das Tabellenmodell veranlasst, seine internen Datenstrukturen zu aktualisieren und die Tabelle zu aktualisieren.
Hier ist eine aktualisierte Version Ihres Codes, die die notwendigen Änderungen enthält:
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()); } } });
Durch Aufruf von fireTableRowsDeleted() , weisen Sie das Tabellenmodell an, die angegebene Zeile aus seinen internen Datenstrukturen zu entfernen und die Tabelle entsprechend zu aktualisieren. Dadurch wird sichergestellt, dass die GUI die an der zugrunde liegenden Datenbank vorgenommenen Änderungen widerspiegelt.
Das obige ist der detaillierte Inhalt vonWarum wird meine JTable nach dem Löschen einer Zeile aus der Datenbank nicht aktualisiert?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!