Avoir un arbre tree2 comme copie d'un arbre tree1 [Résolu]

Messages postés
64
Date d'inscription
mardi 7 février 2006
Dernière intervention
17 juillet 2009
- - Dernière réponse : pseudo85
Messages postés
64
Date d'inscription
mardi 7 février 2006
Dernière intervention
17 juillet 2009
- 26 nov. 2008 à 12:50
Bonjour,
J'ai un arbre que j'ai construit à partir de mon programme;
Je souhaite avoir avoir un deuxième arbre qui soit une copie excate de ce premier arbre. Pour cela j'ai le code suivant:


  DefaultMutableTreeNode racine1 = new DefaultMutableTreeNode("Noeud racine");
  TreeModel modèle1 = new DefaultTreeModel(racine1);
  JTree jTree1 = new JTree(modèle1);
  TreeModel modèle2 = modèle1;
  JTree jTree2 = new JTree(modèle2);


ça marche, j'ai le deuxième arbre jTree2 exactement semblable au premier. Le problème est que quand je supprime un noeud de l'arbre jTree2, il est également supprimé de l'arbre jTree1, alors que je n'utilise dans la suppression que le "modèle2".
Quel est le problème SVP?
Merci pour votre aide.
Afficher la suite 

Votre réponse

2 réponses

Meilleure réponse
Messages postés
493
Date d'inscription
samedi 20 mai 2006
Dernière intervention
15 juillet 2012
3
Merci
Tu ne copie pas le modèle lui-même, mais seulement la référence du modèle. Dans ce cas, les deux JTree se partage le même modèle et le comportement décrit est normal. Nous pouvons faire une vrai copie en sérialisant l'object. Exemple:

private DefaultTreeModel copyTreeModel(DefaultTreeModel modelOriginal) {
    DefaultTreeModel modelCopy = null;
    ByteArrayOutputStream outStream = new ByteArrayOutputStream();
    try {
        ObjectOutput out = new ObjectOutputStream(outStream);
        out.writeObject(modelOriginal);
        InputStream inStreem = new ByteArrayInputStream(outStream.toByteArray());
        ObjectInput in = new ObjectInputStream(inStreem);
        modelCopy = (DefaultTreeModel) in.readObject();
    } catch (Exception ex) {
        modelCopy = modelOriginal;//en cas d'échec nous renvoyons l'original
    }
    return modelCopy;
}

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 97 internautes nous ont dit merci ce mois-ci

Commenter la réponse de uhrand
Messages postés
64
Date d'inscription
mardi 7 février 2006
Dernière intervention
17 juillet 2009
0
Merci
Super, ça marche très bien. Merci uhrand.
Commenter la réponse de pseudo85

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.