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 :

[JTree] Créer un dossier vide


Sujet :

Composants Java

  1. #1
    Membre émérite Avatar de jojodu31
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    875
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mars 2008
    Messages : 875
    Par défaut [JTree] Créer un dossier vide
    bonjour à tous,
    je souhaiterais créer dans mon JTree un nouveau dossier qui sera rempli plus tard ...
    le pb est que comme vous le savez quand je l'ajoute il a l icone d une feuille on ne voit donc pas que c est un dossier ... y a t il une fonction pour créer un noeud de type Dossier ?
    sinon il y aura la méthode de changer les icones de ce type de noeud pour donner l illusion... y a t il mieux ?

    merci

  2. #2
    Membre Expert
    Avatar de CheryBen
    Inscrit en
    Mai 2005
    Messages
    1 599
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Mai 2005
    Messages : 1 599
    Par défaut
    Bonjour jojo, tu devrais trouver ta réponse dans ce sujet : JTree, les dossiers vides apparaissent comme un fichier.

  3. #3
    Membre émérite Avatar de jojodu31
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    875
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mars 2008
    Messages : 875
    Par défaut
    merci bien
    alors en fait j'ai fait ceci : j'avais déjà des noeud personnalisé, donc j'ai rajouté un contructeur comme ceci :

    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
    30
    31
    32
     
    public class MyCustomNode extends javax.swing.tree.DefaultMutableTreeNode 
    {
    	private static final long serialVersionUID = 1L;
     
    	//boolean pour savoir si le noeud en cours est 
    	// de type fichier ou dossier
    	private boolean isFile = false; 
     
    	public MyCustomNode()
    	{
    		super();
    		this.isFile = false;
    	}
     
    	public MyCustomNode(MyTreeObject obj, boolean isFile)
    	{
    		super(obj);
    		this.isFile = true;
    	}
     
    	public MyCustomNode(MyTreeObject obj)
    	{
    		super(obj);
    		this.isFile = false;
    	}
     
        public boolean isLeaf() {
            return !(this.isFile);
        }
     
    //........... fin du code .............
    ensuite dans mon code je créé 2 types de noeuds , un normal et un de type dossier :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    MyCustomNode childNode = new MyCustomNode(obj); 
    MyCustomNode fileChildNode = new MyCustomNode(obj,true);
    et pour l'ajout dans l'arbre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    // si c'est un objet, on cree un noeud special DOSSIER
    									if( "OBJECT".equals(currentLabel.getText())){
    										((DefaultTreeModel)arbre.getModel()).insertNodeInto(fileChildNode, 
    												selNode,
    												selNode.getIndex(selNode)+1);
    										System.out.println("dddddddd");
    									}
    									else{
    										((DefaultTreeModel)arbre.getModel()).insertNodeInto(childNode, 
    												selNode,
    												selNode.getIndex(selNode)+1);
    										System.out.println("eeeee");
    le pb est qu'il passe bien là il devrait ( println à l appui) sauf que rien n apparait dans mon JTree a l affichage
    si j enleve le constructeur qui prend en compte mon boolean tt marche ...

    j'ai fais qq chose de mal ?

  4. #4
    Membre Expert
    Avatar de CheryBen
    Inscrit en
    Mai 2005
    Messages
    1 599
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Mai 2005
    Messages : 1 599
    Par défaut
    Ton constructeur avec le boolean n'est pas bon, tu ne tiens pas compte de la valeur du boolean donné en paramètre.
    J'aurai plutôt vu :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    public MyCustomNode()
    {
        this(null);
    }
    public MyCustomNode(MyTreeObject obj)
    {
        this(obj, false);
    }
    public MyCustomNode(MyTreeObject obj, boolean isFile)
    {
        super(obj);
        this.isFile = isFile;
    }

  5. #5
    Membre émérite Avatar de jojodu31
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    875
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mars 2008
    Messages : 875
    Par défaut
    certes mais j'ai maintenant une vrai erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Exception in thread "AWT-EventQueue-0" java.lang.IllegalStateException: node does not allow children
    à cette ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    ((DefaultTreeModel)arbre.getModel()).insertNodeInto(childNode, 
    selNode,selNode.getIndex(selNode)+1);
    le problème vient du isLeaf() non ? ... mais pk ?

  6. #6
    Membre Expert
    Avatar de CheryBen
    Inscrit en
    Mai 2005
    Messages
    1 599
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Mai 2005
    Messages : 1 599
    Par défaut
    Tu n'aurais pas inversé dossiers et fichiers (le boolean)? il me semble que si isLeaf renvoit true, il s'agit d'une feuille (un fichier).

  7. #7
    Membre émérite Avatar de jojodu31
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    875
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mars 2008
    Messages : 875
    Par défaut
    non, disons que je me suis trompé dans ma tête j'ai remplacé le isFile par isFolder mais ça ne change rien c'est une question de syntaxe juste ...
    par contre je m'étais trompé dans mon constructeur j'avais utilisé super(..) au lieu de this(...)
    bon du coup plus d erreur mais toujours ce problème : ça n affiche rien alors que l'ajout du noeud est fait

  8. #8
    Membre émérite Avatar de jojodu31
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    875
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mars 2008
    Messages : 875
    Par défaut
    ayééééééé !! j'ai modifié ma méthode isLeaf() :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     public boolean isLeaf() {
            return (!(this.isFolder) && !isRoot());
        }
    du coup ça marche impec un grand merci encore une fois ...

  9. #9
    Membre Expert
    Avatar de CheryBen
    Inscrit en
    Mai 2005
    Messages
    1 599
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Mai 2005
    Messages : 1 599
    Par défaut
    De rien

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

Discussions similaires

  1. Réponses: 7
    Dernier message: 16/02/2011, 15h06
  2. Comment créer un dossier ?
    Par Bouguennec dans le forum Langage
    Réponses: 3
    Dernier message: 23/09/2005, 12h15
  3. [FLASH MX2004] Créer un clip vide et le transformer en bouto
    Par softyClochette dans le forum Flash
    Réponses: 5
    Dernier message: 13/12/2004, 22h26
  4. Créer un dossier sur serveur distant
    Par TorÕ02 dans le forum C++
    Réponses: 7
    Dernier message: 11/10/2004, 18h30
  5. Réponses: 2
    Dernier message: 29/07/2003, 13h52

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