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 :

destruction d'un Jtree


Sujet :

Composants Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre chevronné
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    1 858
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 1 858
    Par défaut destruction d'un Jtree
    Bonjour,

    voici comment je créé mon JTree :
    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
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
     
    	String racineName = "racine";
    	private JTree pTree = null;
    	JScrollPane jspJTree = null;
    	JFrame jfJTree;
     
    	private DefaultMutableTreeNode treeNode_racine = null;
    	private DefaultMutableTreeNode treeNode_actif = null;
     
    	private JTextArea jta;
     
        private void initTree(){
     
        	jta.setText(""); // on vide le JTextArea
     
        	treeNode_racine = new DefaultMutableTreeNode(racineName);
        	treeNode_actif = treeNode_racine;
     
        	//On crée, avec notre hiérarchie, un arbre
        	pTree = new JTree(treeNode_racine);
     
        	// => code de création des composant parents
        	//jspJTree = new JScrollPane(pTree);
          	//jfJTree = new JFrame();
        	//jfJTree.add(jspJTree);
        	//JSplitPane splitPane = new JSplitPane(JSplitPane.VERTICAL_SPLIT, jspJTree, new JFrame().add(jspJTextArea));
        	//this.add(splitPane);
     
        }
    => les lignes en commentaires sont en faite en dehors de ma fonction : c'est la suite du code


    je ne comprends pas pourquoi mais lorsque je veux recréer mon arbre l'affichage de celui-ci n'est pas modifié. voici comment je fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    	initTree();
        	pTree.repaint(); // rafraichi l'affichage du JTree
    => j'ai l'impression qu'il y a un problème sur le pointage de mes objets : c'est comme ci l'ancien arbre existait toujours en mémoire et qu'il était encore utilisé...

  2. #2
    Membre très actif Avatar de unknow0
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 452
    Par défaut
    Bonjour,

    le truc c'est que ne modifie pas le JTree mais en crée un autre qui n'est donc pas afficher
    l'ancien JTree (dont tu n'a plus la référence) et toujours dans la fenêtre et c'est normal.

    par contre n'ayans jamais utiliser de JTree je ne peu te dire comment modifier un arbre :s

    Edit: apparemment il suffi de modifier le DefaultMutableTreeNode qui sert de racine.
    tu peu supprimer ses enfant via removeAllChildren()

  3. #3
    Membre chevronné
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    1 858
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 1 858
    Par défaut
    merci pour ton aide ça m'a permit de trouver la solution

    Donc pour pouvoir manipuler mon arbre, il me faut au moins 3 classes
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    // création du JTree
    treeNode_racine = new DefaultMutableTreeNode("racine");
    pTree = new JTree(treeNode_racine);
    treeNode_racine.add(new DefaultMutableTreeNode("noeud"));
     
    // suppression des éléments du Jtree
    treeNode_racine.removeAllChildren();
    dtm = (DefaultTreeModel) pTree.getModel();
    dtm.reload();
    => je trouve les composants swing vraiment mal pensés : pourquoi n'ont-ils pas créé une classe avec toutes les méthodes ? il y a un intérêt à ça ?

  4. #4
    Membre très actif Avatar de unknow0
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 452
    Par défaut
    Citation Envoyé par boboss123 Voir le message
    => je trouve les composants swing vraiment mal pensés : pourquoi n'ont-ils pas créé une classe avec toutes les méthodes ? il y a un intérêt à ça ?
    oui ils sont mvc le JTree c'est juste une vue sur le model (ici DefaultMutableTreeNode)
    donc pour modifier la vue il faut modifier le model
    et c'est pareil pour tous les composant swing (même si il y a des fois des method dans la vue pour modifier le model ..)

  5. #5
    Membre chevronné
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    1 858
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 1 858
    Par défaut
    ok, merci

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

Discussions similaires

  1. [JTree] rafraichissement
    Par nurn dans le forum Composants
    Réponses: 12
    Dernier message: 29/07/2005, 14h41
  2. Création/Destruction
    Par HT dans le forum Langage
    Réponses: 5
    Dernier message: 22/05/2003, 17h04
  3. Réponses: 7
    Dernier message: 18/04/2003, 10h02
  4. [JTree]redimensionnement d'un noeud
    Par grishka dans le forum Composants
    Réponses: 4
    Dernier message: 10/04/2003, 14h33
  5. [JTree] Ouvrir/Fermer l'ensemble des noeuds
    Par Math_Caen dans le forum Composants
    Réponses: 3
    Dernier message: 07/04/2003, 14h01

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