IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Composants Java Discussion :

Enregistrement d'un JTree


Sujet :

Composants Java

  1. #1
    Membre confirmé
    Inscrit en
    Décembre 2008
    Messages
    195
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 195
    Par défaut Enregistrement d'un JTree
    Salut tout le monde

    J'ai des questions à poser à propos du JTree

    J'aimerais tout d'abord savoir comment on peut enregistrer le contenu d'un JTree avant de fermer le programme afin de pouvoir le recharger dans une nouvelle execution de ce dernier.
    Ensuite je voudrais aussi trouver un moyen qui permet d'etablir un lien et faire coincider le contenu d'un JTree et d'un arbre binaire logique dont la classe est déjà définie (avec des fils droits, des fils gauches, contenu des noeuds)

    Merci d'avance.

  2. #2
    Membre émérite Avatar de herch
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    655
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Canada

    Informations forums :
    Inscription : Mai 2006
    Messages : 655
    Par défaut
    J'aimerais tout d'abord savoir comment on peut enregistrer le contenu d'un JTree avant de fermer le programme afin de pouvoir le recharger dans une nouvelle execution de ce dernier.
    tu pourrais utiliser les ObjectOutputStream et ObjectInputStream
    http://java.developpez.com/faq/java/...ION_serialiser

  3. #3
    Membre confirmé
    Inscrit en
    Décembre 2008
    Messages
    195
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 195
    Par défaut
    Merci d'avoir repondu.

    En fait j'ai reussi à enregistrer le contenu de l'arbre et le recharger (je sais que l'Input marche parceque j'ai essayé d'afficher le contenu de l'arbre sur console et ça a marché).
    Mon nouveau problème est que quand je recharge, l'arbre ne se met pas à jour sur la fenetre, donc je me demande comment faire?

    Il y'a aussi une autre question, y'a t il un moyen pour enregistrer plusieurs arbres et donner l'accés à l'utilisateur de choisir celui qu'il veut recharger?

    Merci encore!

  4. #4
    Membre émérite Avatar de herch
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    655
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Canada

    Informations forums :
    Inscription : Mai 2006
    Messages : 655
    Par défaut
    tu as essayé d'appeler repaint() sur ton frame après avoir rechargé ton JTree?
    et puis quand tu parles de recharger l'arbre, qu'est-ce que tu veux dire par là?? comment tu fais??

  5. #5
    Membre confirmé
    Inscrit en
    Décembre 2008
    Messages
    195
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 195
    Par défaut
    oui j'ai essayé avec repaint() que j'ai appliqué au container de mon JTree (mais ça n'a pas marché), je vais copier-coller le code (desolé pour la présentation, je ne sais pas comment le mettre sous le format d'un code Java):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    try {
    				ois = new ObjectInputStream(new BufferedInputStream(new FileInputStream(new File("arbre.ser"))));
    				try {
    					racineJTree=(DefaultMutableTreeNode) ois.readObject();
    					arbreJTree=new JTree(racineJTree);
     
    				} catch (ClassNotFoundException e) {
    					e.printStackTrace();
    				}
    			} catch (FileNotFoundException e) {
    				e.printStackTrace();
    			} catch (IOException e) {
    				e.printStackTrace();
    			}

  6. #6
    Membre émérite Avatar de herch
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    655
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Canada

    Informations forums :
    Inscription : Mai 2006
    Messages : 655
    Par défaut
    est-ce tu crée ton JTree, et après tu l'ajoutes à ton frame??

  7. #7
    Membre confirmé
    Inscrit en
    Décembre 2008
    Messages
    195
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 195
    Par défaut
    oui, j'ai une fenetre où je peux créer un JTree et le manipuler (ajouter, modifier et supprimer ses noeuds), j'ai ajouter un menu d'enregistrement et un autre de recharge dans une barre de menu, l'opération de sauvegarde et de recharge marche bien mais pas au niveau de l'affichage, je n'arrive pas à mettre mon JTree à jour au niveau de l'ecran.

  8. #8
    Membre émérite Avatar de herch
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    655
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Canada

    Informations forums :
    Inscription : Mai 2006
    Messages : 655
    Par défaut
    essaie revalidate() sur ton JTree
    il y a aussi la méthode reload() de DefaultTreeModel

  9. #9
    Membre confirmé
    Inscrit en
    Décembre 2008
    Messages
    195
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 195
    Par défaut
    ça ne marche toujours pas

  10. #10
    Membre émérite Avatar de herch
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    655
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Canada

    Informations forums :
    Inscription : Mai 2006
    Messages : 655
    Par défaut
    salut, essaie ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    ObjectInputStream out = new ObjectInputStream(new FileInputStream("racine.ser"));
    DefaultMutableTreeNode root = (DefaultMutableTreeNode)out.readObject();
    DefaultTreeModel model = (DefaultTreeModel)tree.getModel();
    model.setRoot(root);
    bien sûr tu mets ceci dans un bloc try catch, à la place de ton code de chargement de l'arbre, et regarde si ça marche

  11. #11
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    je vois pas dans ton chargement le code où t'ajoute le tree à ta fenêtre. T'aurais pas, par hasard oublié de le faire ou alors t'aurais ajouté à la fenêtre un JTree vide avant le chargement, que t'aurais oublié de remplacer?

  12. #12
    Membre confirmé
    Inscrit en
    Décembre 2008
    Messages
    195
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 195
    Par défaut
    ça marche bien en ce qui concerne le reaffichage mais je perd le controle sur les noeuds, je ne peux plus les modifier. (je tiens quand meme à te remercier pour tes réponses ^^)

    J'ajoute l'arbre à la fenetre dans le constructeur de cette derniere, et puis j'ajoute un menu item qui ecoute une classe qui implemente ActionListener et c'est là ou j'ecris ce code.

  13. #13
    Membre émérite Avatar de herch
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    655
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Canada

    Informations forums :
    Inscription : Mai 2006
    Messages : 655
    Par défaut
    mais je perd le controle sur les noeuds, je ne peux plus les modifier.
    ??????
    est-ce que tu les supprimais avant mais maintenant tu ne le peux plus???

  14. #14
    Membre confirmé
    Inscrit en
    Décembre 2008
    Messages
    195
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 195
    Par défaut
    c'est bon ça marche trés bien cette fois! je devais associer root à la racine de mon arbre, voici le code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
     
    ObjectInputStream out;
    			try {
    				out = new ObjectInputStream(new FileInputStream("arbre.ser"));
    				try {
    					racineJTree = (DefaultMutableTreeNode)out.readObject();
    				} catch (ClassNotFoundException e) {
    					// TODO Auto-generated catch block
    					e.printStackTrace();
    				}
    				DefaultTreeModel model = (DefaultTreeModel)arbreJTree.getModel();
    				model.setRoot(racineJTree);
    			} catch (FileNotFoundException e) {
    				// TODO Auto-generated catch block
    				e.printStackTrace();
    			} catch (IOException e) {
    				// TODO Auto-generated catch block
    				e.printStackTrace();
    			}
    merci sincérement! en ce qui concerne l'enregistrement de plusieurs arbres je crois que je dois lire un tutoriel sur JFileChooser, car je le connais que de nom.

    merci encore.

  15. #15
    Membre émérite Avatar de herch
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    655
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Canada

    Informations forums :
    Inscription : Mai 2006
    Messages : 655
    Par défaut
    bon courage dans tes recherches,
    pour mieux présenter le code que tu postes, englobes le dans une balise CODE, c'est le bouton où il y a le #

  16. #16
    Membre confirmé
    Inscrit en
    Décembre 2008
    Messages
    195
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 195
    Par défaut
    voilà c'est fait, merci encore pour ton aide!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Perte d'enregistrements
    Par AnnSo dans le forum Paradox
    Réponses: 15
    Dernier message: 06/08/2006, 23h39
  2. [VB6] [Crystal] Selection enregistrement
    Par littlecow dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 11/01/2005, 13h08
  3. Enregistrer un RichEdit dans un .Txt
    Par Clément[Delphi] dans le forum Composants VCL
    Réponses: 2
    Dernier message: 06/08/2002, 11h52
  4. [BDD] Enregistrer le résultat d'une requête
    Par Mowgly dans le forum C++Builder
    Réponses: 5
    Dernier message: 19/06/2002, 15h26
  5. enregistrer dans un fichier avec une appli mdi
    Par ferrari dans le forum C++Builder
    Réponses: 4
    Dernier message: 05/05/2002, 15h17

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo