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.
- };
|