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] Construction dynamique


Sujet :

Composants Java

  1. #1
    raj
    raj est déconnecté
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    112
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 112
    Points : 100
    Points
    100
    Par défaut [JTree] Construction dynamique
    Je développe une application qui fait client FTP .
    Mon application doit afficher la hiérarchie des répertoires du
    serveur distant .
    Pour cela j'utilise notamment le composant JTree .
    Dans un souci logique de performance je souhaiterais construire
    la hiérarchie dynamiquement :

    Des qu'un utilisateur clique sur un répertoire dans le JTree ,
    l'application effectue une requete FTP ("LIST -L") .
    Puis seulement l'arborescence de ce niveau se crée .
    Le problème est que dans la JTree un noeud apparait
    comme une feuille s'il n'as pas déja des descendants .

    Je sais pas si j'ai été assez clair .

    Tout suggestion serait la bienvenue




    [Modéré par Didier]
    Ajout de tag dans le titre
    Lire les règles du forum : Règles du forum Java

  2. #2
    Membre confirmé Avatar de benratti
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    471
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mai 2004
    Messages : 471
    Points : 649
    Points
    649
    Par défaut Re: Construction dynamique d'un JTree
    Si ca t'interesse, il y a quelques temps, j'ai implemente un petit explorateur de fichier. Je pouvais soit lire les fichiers sur le disque dur, soit me connecter a un serveur FTP et regarder l'arborescence des fichiers. Je m'etais effectivement poser ta question car explorer tout le serveur d'un coup, c'est vraiment pas efficace...

    Je ne me souviens plus la facon dont j'avais resolu le probleme mais je peut t'envoyer les sources de mon petit programme ( pas plus de 8 classes en tout ). J'utilisais effectivement un JTree pour l'arborescence et j'ajoutais des TreeNode au fur et a mesure.

    Tu trouveras les sources ici
    et la doc correspondante la


    Citation Envoyé par raj
    Je développe une application qui fait client FTP .
    Mon application doit afficher la hiérarchie des répertoires du
    serveur distant .
    Pour cela j'utilise notamment le composant JTree .
    Dans un souci logique de performance je souhaiterais construire
    la hiérarchie dynamiquement :

    Des qu'un utilisateur clique sur un répertoire dans le JTree ,
    l'application effectue une requete FTP ("LIST -L") .
    Puis seulement l'arborescence de ce niveau se crée .
    Le problème est que dans la JTree un noeud apparait
    comme une feuille s'il n'as pas déja des descendants .

    Je sais pas si j'ai été assez clair .

    Tout suggestion serait la bienvenue

  3. #3
    Membre confirmé Avatar de benratti
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    471
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mai 2004
    Messages : 471
    Points : 649
    Points
    649
    Par défaut
    Bon, je me suis un peu replonge dans mon code et je t'explique comment je faisais :

    J'avais un TreeSelectionListener associe a mon JTree
    je definissais la methode valueChanged. Cela consiste simplement a recuperer le TreeNode sur lequel tu as clique a l'aide de la methode
    getLastSelectedPathComponent().

    Ensuite, j'appelais une methode de chargement qui se charge d'explorer le noeud. Je m'explique :

    A chaque noeud correspond un repertoire sur le serveur FTP, donc il faut que tu te debrouilles pour recuperer les sous-repertoires sur le serveur, mais ca, c'est toi qui gere. Pour info, j'avais fait ma propre classe qui heritait de TreeNode pour pouvoir directement stocker les infos sur le rep dans le noeud.

    Une fois que tu as recuperer les sous-repertoires, tu cree des TreeNode pour chacun et a chaque fois, tu les ajoute au TreeNode "pere" a l'aide de la methode add.

    Pour les fichiers, tu les affiches comme tu veux mais pour ne pas avoir a les recuperer par la suite, je les stockais directement dans le noeud.

    Voila, j'espere t'avoir un peu eclaire la dessus.

  4. #4
    Membre confirmé Avatar de benratti
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    471
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mai 2004
    Messages : 471
    Points : 649
    Points
    649
    Par défaut Re: Construction dynamique d'un JTree
    Citation Envoyé par raj
    Le problème est que dans la JTree un noeud apparait
    comme une feuille s'il n'as pas déja des descendants .
    Pour ca, j'avais aussi le meme probleme, il suffit de changer l'icone correspondant aux feuilles et de mettre a la place celui des repertoires..

    essaie ca :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    DefaultTreeCellRenderer renderer = new DefaultTreeCellRenderer();
    renderer.setLeafIcon(renderer.getClosedIcon());
    tonJTree.setCellRenderer(renderer);
    tonJTree correspond bien evidement au JTree ...

    Bon, je me suis un peu etale mais j'espere quand meme que ca t'as un peu aide au final

  5. #5
    raj
    raj est déconnecté
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    112
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 112
    Points : 100
    Points
    100
    Par défaut
    Merci tes codes me sont tres utiles .
    Cool!!

  6. #6
    raj
    raj est déconnecté
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    112
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 112
    Points : 100
    Points
    100
    Par défaut
    Est-ce qu'on peut faire avec les JTree comme avec les JTable
    et réimplémenter des renderer .
    Ce que je voudrais c'est pas que tout apparaisse comme des
    répertoires mais que suivant une information stockée sur
    le noeud ( qu'on peut récuperer ) l'icone affichée est différente .
    Style pour des .doc ou des .jpg il affiche autre chose
    Ca serait bien
    Tu pense que c'est possible sans trop galérer?

  7. #7
    Membre confirmé Avatar de benratti
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    471
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mai 2004
    Messages : 471
    Points : 649
    Points
    649
    Par défaut
    Je suis content que mes vieux codes puissent servir... a la base, je voulais aussi me creer un joli petit client FTP mais j'ai pas eu le temps et la motivation pour aller plus loin....

    Pour ce qui est de reimplementer les renderer, je pense que c'est tout a fait possible et meme fait pour... mais je n'ai jamais essaye... donc je ne sais pas trop comment on fait. Je te dis donc bon courage mais en cherchant bien, ca doit pas etre trop galere.
    [/quote]

  8. #8
    Membre à l'essai
    Inscrit en
    Décembre 2004
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 9
    Points : 10
    Points
    10
    Par défaut
    Oui on peut assez facilement définir l'aspect d'un noeud en fonction de son contenu, niveau hiérarchique...
    Je ne sais pas si ce que j'ai fait est le plus propre/simple/mieux(!) : j'ai fait une classe héritant de DefaultTreeCellRenderer :

    public class TreeTreeCellRenderer extends DefaultTreeCellRenderer {
    static {
    try {
    treeImage1 = new ImageIcon(Une_Classe_Racine_Du_Package.class.getResource("Images/Tree1.gif"));
    }
    catch (NullPointerException e) {}
    treeImage2 = new ImageIcon(Une_Classe_Racine_Du_Package.class.getResource("Images/Tree2.gif"));
    }
    catch (NullPointerException e) {}

    }

    public Component getTreeCellRendererComponent(JTree tree, Object value, boolean sel, boolean expanded, boolean leaf, int row, boolean hasFocus) {
    Component renderer = super.getTreeCellRendererComponent(tree, value, sel, expanded,leaf, row, hasFocus);
    if (une_condition)
    this.setIcon(treeImage1);
    else
    this.setIcon(treeImage2);
    return renderer;
    }
    }

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

Discussions similaires

  1. [XUL] Construction dynamique d'un template
    Par Christophe Charron dans le forum Autres langages pour le Web
    Réponses: 9
    Dernier message: 05/09/2006, 21h42
  2. [MySQL] Construction dynamique d'un "list treeview"
    Par kilanepa dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 03/03/2006, 17h09
  3. Construction dynamique
    Par rvzip64 dans le forum Langage
    Réponses: 9
    Dernier message: 23/10/2005, 11h23
  4. [Thread] Construction dynamique
    Par Rayek dans le forum Composants VCL
    Réponses: 3
    Dernier message: 21/09/2005, 09h06
  5. [JTree] Modification dynamique du texte à afficher
    Par jIdJo dans le forum Composants
    Réponses: 2
    Dernier message: 17/06/2005, 16h49

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