Bonjour,
J'ignore si ce problème a déjà été exposé. J'ai parcouru les 10 premières pages de topics sans trouver de sujet similaire.
Voici mon problème: j'ai une exception lorsque je veux supprimer une ligne de ma table:
Exception in thread "AWT-EventQueue-0" java.lang.ArrayIndexOutOfBoundsException: 0 >= 0
at java.util.Vector.removeElementAt(Unknown Source)
at javax.swing.table.DefaultTableModel.removeRow(Unknown Source)
Alors voila comment mon modèle fonctionne:
1 - Les données de ma JTable sont fournies depuis un objet tierce (qui charge un fichier XML, enfin peu importe) et fournit des méthodes du style getOperationCount(), getOperationLabel(int index)... Donc, j'ai défini une classe qui hérite de DefaultTableModel et qui se base sur les méthodes fournies par I pour surcharger les méthodes getRowCount(), getValueAt(..), etc...
2 - Lorsque je souhaite supprimer une entrée dans la table, j'appelle directement la méthode I.removeOperation(index) et comme mon TableModel se base sur I pour définir le contenu, à priori la suppression devrait être effective sur la JTable.
Malgré ça, ça ne fonctionne pas. J'ai donc tenté quelque chose du style:
J'ai essayé d'inverser les removeRow et removeOperation mais ça ne change rien. J'ai également vu d'autres topics qui disaient que le DefaultTableModel utilise un Vector et qu'il y a un souci lorsque les colonnes sont ajoutées à la JTable plutôt qu'au modèle. Dans mon cas je n'ajoute rien explicitement, je surchage les méthodes getColumnCount() et getColumnName(int column).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 // depuis ma class héritant de DefaultTableModel public void removeRow(final int row) { super.removeRow(row); I.removeOperation(row); fireTableRowsDeleted(row,row); }
Quelqu'un a une idée ? Merci.
Partager