Serializaer tout le contenu d'un objet

Serializaer tout le contenu d'un objet - Java - Programmation

Marsh Posté le 25-05-2005 à 14:36:24    

Bonjour,
 
j'essaye de Serializer un MutableTreeNode racine qui est donc la racine d'un arbre (JTree). Quand je la serialize je récupere tout va bien. Puis quand je vais lire dans mon objet je récupére bien les liens de parentés mais la valeur de tout les noeuds sont à null comme si il n'arrivait pas a recuperer les etiquettes. Voici mon code ou je met a la suite l'enregistrement et la recuperation :
 

Code :
  1. try {
  2.    //Je crée un fichier temporaire dans le répértoire courant  
  3.    //Ce fichier est l'arbre (selection de l'utilisateur) serializé
  4.    //Flux créant un fichier
  5.    FileOutputStream fos = new FileOutputStream(this.chemin);
  6.    //Flux dans lequel je stocke un objet
  7.    ObjectOutputStream oos = new ObjectOutputStream(fos);
  8.    //J'écris dans mon flux mon objet
  9.    System.out.println("racine avant drag = "+this.racine);
  10.    oos.writeObject(this.racine);
  11.    //On ferme le flux
  12.    oos.flush();
  13.    fos.close();
  14.   } catch (FileNotFoundException e1) {
  15.    System.err.println("FileNotFoundException" );
  16.    e1.printStackTrace();
  17.    return null;
  18.   } catch (IOException e1) {
  19.    System.err.println("IOException" );
  20.    return null;
  21.   } catch (ClassCastException e1) {
  22.    System.err.println("ClassCastException" );
  23.    return null;
  24.   }
  25.   try {
  26.    FileInputStream fos = new FileInputStream(this.chemin);
  27.    ObjectInputStream oos = new ObjectInputStream(fos);
  28.    //J'écris dans mon flux mon objet
  29.    MutableTreeNode sousArbre = (MutableTreeNode) oos.readObject();
  30.    //On ferme le flux
  31.    fos.close();
  32.    //On récupére l'arbre
  33.    System.out.println("racine apres drag = " + sousArbre);
  34.    this.racine = sousArbre;
  35.    modele = new DefaultTreeModel(racine);
  36.    Arbre.setModel(modele);
  37.    Aide a = new Aide(Arbre);
  38.   } catch (FileNotFoundException e1) {
  39.    System.err.println("FileNotFoundException" );
  40.    e1.printStackTrace();
  41.   } catch (IOException e1) {
  42.    System.err.println("IOException" );
  43.    e1.printStackTrace();
  44.   } catch (ClassNotFoundException e1) {
  45.    System.err.println("ClassNotFoundException" );
  46.    e1.printStackTrace();
  47.   } catch (ClassCastException e1) {
  48.    System.err.println("ClassCastException" );
  49.    e1.printStackTrace();
  50.   }


 
Ainsi :
System.out.println("racine avant drag = "+this.racine);  
retourne le nom de l'etiquette
 
Mais :
System.out.println("racine apres drag = " + sousArbre);
retourne null
 
?? La je suis perdu :sweat:

Reply

Marsh Posté le 25-05-2005 à 14:36:24   

Reply

Marsh Posté le 25-05-2005 à 15:00:38    

on peut voir le code de ta sous-classe de MutableTReeNode ?


---------------
trainoo.com, c'est fini
Reply

Marsh Posté le 25-05-2005 à 15:05:35    

Tu veux dire comment je crée ma racine et tout ?
 
C'est dans la meme classe et pour créer mon JTree c'est assez compliqué mais en gros ca marche comme ca :
 

Code :
  1. racine =  new DefaultMutableTreeNode(((TreePath)userSelection.get(indexRacine)).getParentPath().getLastPathComponent());
  2.  modele = new DefaultTreeModel(racine);
  3.  Arbre = new JTree(modele);


 
Donc la en gros je crée ma racine avec comme etiquete la valeur de retour de getLastPathComponent(), apres le reste c'est de la bidouille :D
Et ensuite je fais comme ca pour ajouter un fils (et a peu pres pareil pour un frere)
 

Code :
  1. MutableTreeNode fils = new DefaultMutableTreeNode(((TreePath)userSelection.get(i)).getLastPathComponent());
  2.     modele.insertNodeInto(fils,pere,pere.getIndex(pere) + 1);


 
Sauf que pere je l'obtiens autrement (en allant chercher dans des vecteurs) mais j'ai "allegé" en ecrivant directement pere sinon ca serai trop le bordel a lire...
 
Et tout ca c'est dans une boucle et a la fin j'ai mon arbre JTree crée. Je serialize ma racine puis je la récupere...
 

Reply

Marsh Posté le 25-05-2005 à 15:24:57    

C'est bon j'ai trouvé tu m'as mis sur la voix :o
J'ai re regardé ma construction de noeud et j'ai rajouté .toString() et ca marche. :)
Merci ;)

Reply

Marsh Posté le 25-05-2005 à 15:29:36    

Code :
  1. /** optional user object */
  2.     transient protected Object userObject;


conclusion : tu te démerdes pour sauver ta hiérarchie toi-même, le truc ne le fait pas tout seul.


---------------
trainoo.com, c'est fini
Reply

Marsh Posté le 26-05-2005 à 20:59:20    

xstream [:cupra]


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
Reply

Marsh Posté le 27-05-2005 à 09:33:16    

:fou:


---------------
trainoo.com, c'est fini
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed