-
Pb sérialisation JTable
Bonjour et meilleurs voeux à tous,
Mon projet affiche une JTable qui va chercher ses données dans une classe listeDonnees.
Tout fonctionne parfaitement: l'insertion, la suppression des lignes, le raffraichissement d'affichage lorsque des éléments de la table sont modifiés...
listeDonnees contient des ArrayList. Lorsque je remplis ceux-ci à l'aide d'un fichier par le mécanisme de sérialisation, la JTable ne fonctionne plus... pourtant les données chargées sont bien dans les ArrayList.
Pire: getValue() n'est plus appelée lorsque la JTable doit être affichée. On dirait que cette dernière s'est détachée de sa classe listeDonnees.
J'ai trouvé quelques posts sur Internet à ce sujet (preuve que je ne suis pas le seul au monde à avoir ce problème :mouarf:), mais pas de solution clairement affichée.:cry:
Quel est le code magique qui va permettre de retrouver un fonctionnement correcte ?
@ bientôt...
-
Utilises tu un modèle pour ta JTable? As tu déjà utilisé les méthodes fireXXX de celui ci?
Par ce que sinon il va falloir te mettre dare dare au boulot.
-
Ok, Ok, Sinok, j'me mets au boulot...:mouarf:
Concrètement la classe listeDonnees étend AbstractTableModel...est-ce que cela fait office de modèle pour la JTable ?
Pour l'autre question: oui, j'ai effectué un fireTableDataChange.
Mais je constate lorsque je débogue, que le programme ne passe plus par la méhode surchargée getValueAt(). J'ai l'impression que la JTable est détachée de son AbstractTableModel, elle n'est plus raffraichie !
Je n'y comprends plus rien :cry:
@ bientôt...
-
Est-ce listeDonnees qui est désérialisé/désérialisé. Dans ces cas là ton problème est logique et s'explique par le mécanisme de références standard de java. En effet là JTable possède une référence sur le table model. Or faire une affectation dans une autre partie du code ne changera pas là référence. de fait après avoir deserialisé ton modèle tu peux directement faire un setModel sur là jtable pour mettre à jour là reference.
-
Bonjour,
merci pour cette info.
Si je comprends bien le mécanisme:
* Une JTable va chercher ses données vers une classe située à un emplacement mémoire,
* Je désérialise un fichier dans cette classe -> JAVA affecte dynamiquement un autre emplacement mémoire pour la classe des données.
* La JTable "n'étant pas au courant" du déplacement de l'objet en mémoire, elle perd le contact
* En lui redonnant la classe de gestion de données en mémoire, elle se "recale" sur les données qu'elle doit afficher.
Est-ce que j'ai bon là ?
@ bientôt ...