Bonjour à tous,
Voici le problème que je rencontre:
J'ai crée une JTable qui récupère les informations dans la BDD (Base de donnée) et qui l'affiche lorsqu'on appuie sur un bouton "LISTER".
Jusque là, tout va bien.
Ensuite, l'utilisateur a la possibilité de modifier le contenu du Jtable. Ce qui a pour conséquences de changer la BDD.
Pour se faire j'utilise un AbstractTableModel que j'ai personnalisé.
Le problème est que lorsque l'utilisateur manipule les données dans la JTable. Celle ci se modifie bien dans la BDD mais ça ne rafraîchit pas dans la JTable.
Voici les sources. Merci de bien vouloir me dire d'où le problème peut venir car là je sèche un peu.
La fonction SetValueAt de mon TableModel
L'action de écouteur sur le bouton Lister:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 public void setValueAt(Object value, int rowIndex, int columnIndex) { //Cette classe permet juste de se connecter à la base de donnée this.pgSqlAccess = new PgsqlAccess("xxx", xxx, "xxx", "xxx", "xxx"); try { this.pgSqlAccess.executeUpdate("UPDATE t_administration_adm SET "+this.getColumnName(columnIndex)+"='"+value+"' WHERE "+this.getColumnName(0)+"="+this.getValueAt(rowIndex, 0)+";"); } catch (SQLException e) { e.printStackTrace(); } fireTableCellUpdated(rowIndex, columnIndex); }
Je ne comprend pas pourquoi à vrai dire il ne veut pas changer la valeur de mon JTable, si j'appuie à nouveau sur le bouton LISTER, dans ce cas là les valeurs se mettent à jour.. Mais bon ce n'est pas le but, j'ai beau essayer fireTableCellUpdated(rowIndex, columnIndex) ou fireTableDataChanged() mais rien y fait..
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25 else if(_evenement.getActionCommand().equals("LISTER")){ try { ResultSet resultSet = this.executeQueryJtable("SELECT * FROM t_administration_adm;"); JtableRequeteModel TableModel = new JtableRequeteModel(resultSet); JTable jTableAdministration = new JTable(TableModel); TableColumn col = jTableAdministration.getColumn("adm_grp"); col.setCellEditor(new JtableCellEditor()); JPanel panelListerAdm = this.panelAdmin.getjPanelListeAdministration(); panelListerAdm.removeAll(); JScrollPane Jsp = new JScrollPane(jTableAdministration); Jsp.setPreferredSize(new Dimension(1000,400)); panelListerAdm.add(Jsp); panelListerAdm.repaint(); panelListerAdm.revalidate(); } catch (SQLException e) { System.out.println("Erreur dans la liste des administrations"); e.printStackTrace(); } }
Quelqu'un pour m'aider? Merci d'avance
Partager