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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  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).

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

Discussions similaires

  1. Réponses: 7
    Dernier message: 16/02/2011, 14h06
  2. Comment créer un dossier ?
    Par Bouguennec dans le forum Langage
    Réponses: 3
    Dernier message: 23/09/2005, 11h15
  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, 21h26
  4. Créer un dossier sur serveur distant
    Par TorÕ02 dans le forum C++
    Réponses: 7
    Dernier message: 11/10/2004, 17h30
  5. Réponses: 2
    Dernier message: 29/07/2003, 12h52

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