Maison >Java >javaDidacticiel >Pourquoi ma JTable ne se met-elle pas à jour après la suppression d'une ligne de la base de données ?
Le problème auquel vous êtes confronté est lié à la façon dont vous mettez à jour le modèle de table lorsqu'une ligne est supprimée. Actuellement, votre écouteur d'action de bouton deleteSelectedRow met à jour les données dans la base de données mais ne déclenche pas l'actualisation du modèle de table. C'est pourquoi le tableau affiche toujours la ligne supprimée.
Pour résoudre ce problème, vous devez notifier explicitement le modèle de tableau que les données ont changé. Vous pouvez le faire en appelant la méthode fireTableRowsDeleted() de l'interface TableModel chaque fois qu'une ligne est supprimée de la base de données. Cela déclenchera la mise à jour par le modèle de table de ses structures de données internes et l'actualisation de la table.
Voici une version mise à jour de votre code qui inclut les modifications nécessaires :
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()); } } });
En appelant fireTableRowsDeleted() , vous demandez au modèle de table de supprimer la ligne spécifiée de ses structures de données internes et de mettre à jour la table en conséquence. Cela garantira que l'interface graphique reflète les modifications apportées à la base de données sous-jacente.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!