oyé amis forumeurs,
je voudrais pouvoir réaliser la sérialisation ou plutot l'encodage en
un fichier XML d'un composant SWING JTree.
Les Données contenu dans chacun des noeuds de l'abre sont du type suivant:
Code :
- //CLASS NOEUD : mis en tant que UserObject dans un objet de type DefaultMutableTreeNode
- class Noeud
- {
- Etudiant etu;
- Groupe grp;
- .
- .
- .
- public Noeud(IDataNode idn)
- }
- //Un objet de type noeud contient soit un objet Etudiant soit un objet Groupe
- // = INTERFACE COMMUNE
- interface IDataNode
- {
- public String getTypeNode();
- public void setTypeNode(String s);
- public String getNom();
- public void setNom(String s);
- }
- //CLASSE ETUDIANT
- entête: public Etudiant implements Serializable, IDataNode
- constructeur: public Etudiant(String nom, String p_prenom, String age)
- //CLASS GROUPE
- entête: public Groupe implements Serializable, IDataNode
- constructeur: public Groupe(String nomGroupe, String IP_Machine)
|
précision: l'implémentation de Serializable est nécéssaire car je suis dans un environnement RMI est
des objets de type Etudiant et Groupe ont besoin de transiter sur le réseau.
Code :
- //EXEMPLE DE DECLARATION DU JTREE
- JTree tree = new JTree(new DefaultMutableTreeNode(new Noeud( new Groupe(...) )),true);
- ou
- JTree tree = new JTree(new DefaultMutableTreeNode(new Noeud( new Etudiant(...) )),true);
|
J'ai essayé d'utiliser ce bout de code (.bc1) pour générer le fichier XML mais sans succés:
Code :
- XMLEncoder e = new XMLEncoder(
- new BufferedOutputStream(
- new FileOutputStream("Test.xml" )));
- e.writeObject(tree);
- e.close()
|
le fichier résultant n'est pas correct.
il faux vraissemblablement que j'utilise la classe DefautlPersistanceDelegate()
car le constructeur de type Noeud à des paramètres.
C'est justement dans l'adaptation de cette classe à mon cas de figure que je bloque...
quand le bout de code (.bc1) s'éxécute j'ai le message d'erreur suivant:
java.lang.InstantiationException: Noeud
Continuing ...
java.lang.RuntimeException: failed to evaluate: <unbound>=Class.new();
Continuing ...
voilà ,en éspérant que certains arriveront à m'éclairer, merci d'avance
PS: un lien montrant l'utilisation avancé de la classe XMLEncoder http://java.sun.com/products/jfc/t [...] sistence4/