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] Cacher le path


Sujet :

Composants Java

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Juillet 2005
    Messages : 4
    Points : 2
    Points
    2
    Par défaut [JTree] Cacher le path
    salut,
    j utilise un JTree pour afficher un repertoire et son contenu. jusqu la facile
    mais j aimerais cacher une partie du path
    exemple, je suis dans "c:\toto\monrep", je voudrais seulement afficher "\monrep".
    j utilise un TreeModel et je crois croi (kom la grenouille) qu il faut implemeter des listener mais lesquels ?[/b]

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    390
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 390
    Points : 432
    Points
    432
    Par défaut
    Je ne sait pas comment tu stockes dans ton arbre mais plutot que de stocker le chemin complet, tu n'as qu'a stocker le le nom du fichier ou du répertoire avec f.getName() où f est un fichier.

    Si tu veux stocker dans l'arbre tout le chemin mais n'afficher que le nom, dans ce cas il faut que tu passes par un TreeCellRenderer
    Mess with the best, die like the rest!

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    137
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 137
    Points : 143
    Points
    143
    Par défaut
    Ton arbre, il est comme ca ?

    c:\
    c:\coucou
    c:\coucou\coucou2
    c:\coucou\coucou3

    et tu voudrais :


    c:\
    coucou
    coucou2
    coucou3

    ?

    Dans ce cas travaille sur le renderer des noeuds de la feuille :

    http://java.sun.com/docs/books/tutor...e.html#display

    Ca permet d'afficher chacun des noeuds ( ainsi que le texte de présentation ).
    Ensuite, tu n'auras plus qu'à écrire une fonction te retournant le nom partiel à partir du nom global et le tour est joué.

  4. #4
    Candidat au Club
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Juillet 2005
    Messages : 4
    Points : 2
    Points
    2
    Par défaut
    je crois que le treeCellRender correspond a ce que je veux faire mais je n arrive pas a trouver quel methode influe sur l affichage d un node.
    je construit mon arbre comme cela :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    root = new File("c:\coucou\hop");
    modele = new FileTreeModel(root);
    tree = new JTree(modele);
    FileTreeModel etant une class de type TreeModel.

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    390
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 390
    Points : 432
    Points
    432
    Par défaut
    Il y a déjà eu beaucoup de post sur les TreeCellRenderer. En voila un :
    http://www.developpez.net/forums/vie...eecellrenderer
    Mess with the best, die like the rest!

  6. #6
    Candidat au Club
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Juillet 2005
    Messages : 4
    Points : 2
    Points
    2
    Par défaut
    ok, j ai mis un treecell dans mon code. du coup le tree ne s affiche plus du tout !

    vla le code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    tree=null;
    		root = new File("\\\\"+ view);
    		modele = new FileTreeModel(root);
    		tree = new JTree(); // load directory
    		tree.setCellRenderer(new MyTreeCellRenderer());
    		tree.setModel(modele);
    et celui du treecell :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    class MyTreeCellRenderer extends JLabel implements TreeCellRenderer {
     
    	  public Component getTreeCellRendererComponent(JTree tree, Object value,
    	  boolean sel,boolean expanded, boolean leaf, int row, boolean hasFocus) {
     
    	    if(value.equals("ew")) {
     
    	    }
    	    return this;
    	  }
    	}

    et ca c le code du fileTreeModel :
    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
    33
    34
     
    class FileTreeModel implements TreeModel, TreeWillExpandListener{
    	private File root; 
    	public FileTreeModel(File file){
    		root = file;	
    	}	
    	public List getFichiers(Object parent){
    		File fileParent = (File)parent;
    		File[] fichiers = fileParent.listFiles();
    		return	Arrays.asList(fichiers);
    	}
    	public Object getRoot(){
    		return root;
     
    	}
    	public Object getChild(Object parent, int index){
    		return getFichiers(parent).get(index);
    	} 
    	public int getChildCount(Object parent){
    		return getFichiers(parent).size();
    	} 
    	public int getIndexOfChild(Object parent, Object child){
    		return getFichiers(parent).indexOf(child);
    	} 
    	public boolean isLeaf(Object node){
    		File f = (File)node;
    		return !f.isDirectory();
    	}  
    	public void valueForPathChanged(TreePath path, Object newValue){}  
    	public void addTreeModelListener(TreeModelListener l){}  
    	public void removeTreeModelListener(TreeModelListener l){} 
    	public void treeWillCollapse(TreeExpansionEvent e){System.out.println(); }
    	public void treeWillExpand(TreeExpansionEvent e){System.out.println("");}
    }

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    390
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 390
    Points : 432
    Points
    432
    Par défaut
    Ton treeCellRenderer ne fait absolument rien, pas étonnant que l'arbre ne s'affiche pas. A moins que tu n'ai pas mis tout le code.

    Déjà utilise plutot:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    class MyTreeCellRenderer extends DefaultTreeCellRenderer
    car DefaultTreeCellRenderer hérite déjà de JLabel.

    Ensuite dans la méthode getTreeCellRendererComponent, il faut que tu mettes toutes la mise en forme.
    Si tu as des chemin absolu dans ton arbre ca donnera qqchose du genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    public Component getTreeCellRendererComponent(JTree tree, Object value,
         boolean sel,boolean expanded, boolean leaf, int row, boolean hasFocus) {
           super.getTreeCellRendererComponent(tree,value,sel,expanded,leaf,row,hasFocus);
           if ((value != null) && (value instanceof String)) {
                File f = new File((String)value);
                setText(f.getName());
           } else {
                setText("????");
           }
           return this;
    }
    Mess with the best, die like the rest!

  8. #8
    Candidat au Club
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Juillet 2005
    Messages : 4
    Points : 2
    Points
    2
    Par défaut
    MERCI ! ca marche
    je comprend un peu mieux les JTree maintenant

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

Discussions similaires

  1. Installation imprimante Réseau (cacher UNC Path)
    Par Bomba dans le forum VBScript
    Réponses: 1
    Dernier message: 25/04/2009, 09h18
  2. Java Swing : JTree & Path = NULL
    Par ZeeGoo dans le forum Composants
    Réponses: 1
    Dernier message: 22/03/2008, 12h07
  3. JTree cacher des noeuds
    Par dark2 dans le forum Composants
    Réponses: 3
    Dernier message: 13/12/2006, 13h32
  4. [JTree] éditer/cacher une node ?
    Par getString dans le forum Composants
    Réponses: 4
    Dernier message: 01/06/2006, 09h47
  5. [JTree] Cacher certains éléments ...
    Par JamesP dans le forum Composants
    Réponses: 5
    Dernier message: 15/02/2006, 19h16

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