Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

ARBORESCENCE DISQUE TRIEE AVEC JTREE


Information sur la source

Catégorie :Swing Niveau : Débutant Date de création : 28/11/2003 Vu / téléchargé: 6 932 / 1 142

Note :
6,83 / 10 - par 6 personnes
6,83 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

Commentaire sur cette source (6)
Ajouter un commentaire et/ou une note

Description

But : obtenir une arborescence de vos lecteurs sans que cela ne dure des heures (petits malins qui avez des Go de données sur vos immenses disques). J'utilise un MAX_LEVEL permettant de ne descendre que d'un nombre de niveau définit dans les arborescence. Ceci permet de limiter le temps de chargement. Une fois le JTree affiché, on écoute les évenements et notamment TreeExpanded qui lancera une recherche dans l'arborescence ouverte jusqu'à MAX_LEVEL... Et ainsi de suite.
Pour conserver l'objet FILE associé à chaque noeud j'ai créé une sous-classe FSNode qui me permet de conservé l'info.
J'ai également agrémenté mon code d'un Quick Sort (Tri rapide) afin d'obtenir la liste des éléments triée.

Enfin j'ai intégré mon JTree dans un JScrollPane afin de pouvoir utiliser les ascenceurs...

Bon j'espère qu'il y a pas trop de bétises dans ce code, cela fait seulement deux à trois semaines que je fais du JAVA... Toutes mes excuses sinon et les commentaires seront les bienvenus.


 

Conclusion

Code écrit avec JBuilder (le zip contient le répertoire du Projet).
 

Fichier Zip

Pour les "Membres Club", vous pouvez télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !
  •   JTreeFolder
    •   bak
      •   FSoft
        • JTreeFolder.java~44~Télécharger ce fichier [Réservé aux membres club]6 600 octets
        • JTreeFolder.java~45~Télécharger ce fichier [Réservé aux membres club]6 600 octets
        • JTreeFolder.java~46~Télécharger ce fichier [Réservé aux membres club]6 598 octets
        • JTreeFolder.java~47~Télécharger ce fichier [Réservé aux membres club]6 667 octets
        • JTreeFolder.java~48~Télécharger ce fichier [Réservé aux membres club]6 657 octets
        • JTreeFolder.java~49~Télécharger ce fichier [Réservé aux membres club]6 718 octets
        • JTreeFolder.java~50~Télécharger ce fichier [Réservé aux membres club]6 787 octets
        • JTreeFolder.java~51~Télécharger ce fichier [Réservé aux membres club]6 766 octets
        • JTreeFolder.java~52~Télécharger ce fichier [Réservé aux membres club]6 744 octets
        • JTreeFolder.java~53~Télécharger ce fichier [Réservé aux membres club]6 720 octets
    •   classes
      •   FSoft
        • JTreeFolder$1.classTélécharger ce fichier [Réservé aux membres club]1 379 octets
        • JTreeFolder$FSNode.classTélécharger ce fichier [Réservé aux membres club]1 110 octets
        • JTreeFolder.classTélécharger ce fichier [Réservé aux membres club]4 397 octets
      •   package cache
        • FSoft.dep2Télécharger ce fichier [Réservé aux membres club]3 926 octets
    • JTreeFolder.jpx~
    •   src
      •   FSoft
        • JTreeFolder.javaTélécharger ce fichier [Réservé aux membres club]Voir ce fichier6 846 octets
        • JTreeFolder.java~1~Télécharger ce fichier [Réservé aux membres club]3 087 octets
        • JTreeFolder.java~2~Télécharger ce fichier [Réservé aux membres club]3 087 octets
        • JTreeFolder.java~3~Télécharger ce fichier [Réservé aux membres club]4 564 octets
    • JTreeFolder.jpxTélécharger ce fichier [Réservé aux membres club]2 661 octets
    • JTreeFolder.jpx.localTélécharger ce fichier [Réservé aux membres club]1 889 octets
    • JTreeFolder.jpx.local~Télécharger ce fichier [Réservé aux membres club]1 682 octets

Télécharger le zip

Commentaires et avis

signaler à un administrateur
Commentaire de zegamemaster le 30/03/2004 12:48:04

Je sais pas qui a mis deux comme note, mais moi, je trouve ca cool, ca m'a bien aider pour en faire une d'ailleur, j'ai aps encore bien tester remarque, mais a premiere vue, ca a l'air bien et rapide.

signaler à un administrateur
Commentaire de aishu le 09/06/2004 14:09:36

Bien ton code, d'ailleurs c'est le meilleur que j'ai trouvé... Mais malgré tout il y a un petit problème... Au moment de faire ton Expansion, tu ajoute le noeud et le probleme est que si tu fais plusieurs Expansion sur un même noeud, tu verra que les sous fichiers apparaisent autant de fois que tu as fais d'Expansion...Il faudrait peut-être faire un remove (tte l'opération en sens inverse : à chaque fois que tu fais un treeCollapsed, tu supprime les fichiers ajoutés) Ca pourrait être une solution... En vois tu une autre plus efficace ?? Ca me rendrait bien service... Merci !!

signaler à un administrateur
Commentaire de yannickdh le 16/06/2004 16:04:21

tres bien le code,c vrai que c'est le plus rapide, mais auriez vous la solution a mettre dans collapsed pour supprimer les noeuds une fois que l'on referme? merci beaucoup

signaler à un administrateur
Commentaire de mandark le 11/03/2006 12:54:05

Super code !
Mais j'ai un bug ...
Je suis sur un portable qui à un lecteur de cartes mémoires qui vous l'aurez devinné n'a pas forcément une carte mémoire dedans :X
Donc quand le programme liste les roots il tombe dessus et me lance le message windaube "Il n'y a pas de disque dans le lecteur. Insérez un disque dans le lecteur K:"
J'ai essayé de mettre un "if(drive[i].canRead()){" mais il  me lance le message au moment du il fait son canRead donc je ne sais pas comment tester ca ...

Donc -1 pour "bug non géré" ca faut 9 ! (o;

signaler à un administrateur
Commentaire de Thiouwz03 le 12/06/2006 15:26:24

Salut tout le monde, merci pour ton code FredRaid, ca me fait gagner beacoup de temps.
En effet je découvre aujourd'hui les JTree :)
Bon, je me suis cassé la tête sur le problème du lecteur de disquette, alors l'endroit ou l'exception peut être détectée est dans addFolder lorsque l'on fait listFiles sur driveOrDir :
fileList = driveOrDir.listFiles();

vous verez dans la doc, listFiles est sensé levé une SecurityException "SI" un SecurityManager est présent, et voila le problème, je n'arrive pas à un créer un.

Sinon, pour le bug relevé par Aishu sur l'Expension, il suffit de tester dans addFolder si le noeud a déjà des fils ou non :

private void addFolder(File driveOrDir, DefaultMutableTreeNode node, int level) {
    File[] fileList;
    fileList = driveOrDir.listFiles();

    if (fileList != null) {
sortFiles(fileList); // on tri les elements
    }

    // on ne cherche pas plus loin que le niveau maximal définit
    if (level > MAX_LEVEL - 1) {return;}
    // pour chaque élément
    if (node.getChildCount() == 0) {
try {
            for (int i = 0; i < fileList.length; i++) {
        // en fonction du type d'élément
        if (fileList[i].isDirectory()) {
        // si c'est un répertoire on créé un nouveau noeud
                FSNode dir = new FSNode(fileList[i].getName(), fileList[i]);
        node.add(dir);
        // on recherche les éléments (récursivité)
        addFolder(fileList[i], dir, ++level);
    }
    if (fileList[i].isFile()) {
        // si c'est un fichier on ajoute l'élément au noeud
        node.add(new FSNode(fileList[i].getName(), fileList[i]));
    }
        }
    }
    catch (NullPointerException e) {
// rien
    }
}

signaler à un administrateur
Commentaire de mzhunix le 21/04/2008 11:05:29

Bonjour,
solution pour le problème relevé par yannickdh.

il faut ajouter un attribut "IsFirstExpanded" de type boulean à la classe FSNode qui sera à false par défaut et qu'on mettra à true lors à la fin de l'évenement "Expansion".
tester ensuite cette attribut dans au début de l'événement "Expansion" : si true ne rien faire sinon faire les appels nécessaire.

je n'ai vu tout le code, donc je vous ai donné ici la marche à suivre pour.
Bon courage.

Ajouter un commentaire



Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Comparez les prix Nouvelle version

Photothèque Nouveau !



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,655 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.