| psychotek a écrit : 
 
 pourquoi est-ce louche ?
sans ça, la JTable qui utilise le modele n'est pas prévenue de l'insertion d'une nouvelle ligne dans le modele. nan ?
 en fait je débute en swing.
 
 | 
 
Salut,
ce qui est surtout louche, c'est que tu appelle avec getRowCount() en parametre or:
 
| Citation : 
 
 public void fireTableRowsInserted(int firstRow, int lastRow)
 Notifies all listeners that rows in the range [firstRow, lastRow], inclusive, have been inserted.
 
 | 
 
et les index des lignes de ta table vont de 0 à getRowCount() -1.
 
Je pense donc que ton modèle n'est jamais prévenu puisque cette ligne n'existe pas.
Tu devrais donc essayer de faire tes appels ainsi:
| Code : 
 fireTableRowsInserted(0, getRowCount() -1);
 | 
 
 
Si ça ne solutionne pas le problème, moi je ferais plutot comme ca:
 
Utiliser un DefaultTableModel à la place d'un AbstractTableModel qui n'est pas une classe abstraite: donc tu n'as pas besoin de gérer les notifications de changement (fireTableRows****), c'est déja fait.
 
| Citation : 
 
 mon but premier est d'attrapper une modification faite dans la table par l'utilisateur, lors de l'exécution du programme
 | 
 
Ensuite, la JTable répercute automatiquement les changements sur le DefaultTableModel donc si l'utilisateur change une valeur, ajoute des lignes, etc. le modèle est automatiquement mis à jour. Tu n'as donc plus qu'à interroger le modèle suite à un changement:
 
| Code : 
 AllTaskManager atm = new AllTaskManager(/* tes paramètres */);DefaultTableModel dtm = new DefaultTableModel(atm) {     private AllTaskManager _atm = null;     public DefaultTableModel(AllTaskManager atm) throwsNullPointerException {          if(atm == null)               throw(new NullPointerException("ATM IS NULL" ));          _atm = atm;          // appel du constructeur avec Object[][] et Object[]
          this(atm.getData(), atm.getColumnNames());          addTableModelListener(                new TableModelListener() {                     public void tableChanged(TableModelEvent tme) {                          // ici tu mets le même code que ce que tu avais
                     }                }          );     }     public String toString() {          // ici pareil, tu remets ton code
     }     // et ainsi de suite, tu redefinis seulement les méthodes dont tu as besoin.
};
 |