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

Langage Java Discussion :

Problème FAQ : JTree explorateur de fichier


Sujet :

Langage Java

  1. #1
    Membre régulier
    Inscrit en
    Novembre 2004
    Messages
    116
    Détails du profil
    Informations forums :
    Inscription : Novembre 2004
    Messages : 116
    Points : 71
    Points
    71
    Par défaut Problème FAQ : JTree explorateur de fichier
    Bonjour, je cherche à faire un explorateur de fichier avec jtree.

    Et là : "HOOO mon dieu mon site préféré a mis dans sa FAQ, un joli code qui à l'air de faire ça très bien!!"

    je télécharge le zip : Explorateur JTree

    je fais un essai mais Eclipse m'indique que la ligne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Arrays.sort&#40;fichiers,new Comparator<File>&#40;&#41;&#123;
     
    Erreur &#58; Syntax error, parametrized types are only available if source level is 5.0
    est érronée .

    J'ai vu qu'il y avait un sujet là dessus, mais comme dans beaucoup de cas, il l'a mis en [RESOLU] sans indiquer comment il a fait

    Selon ce sujet, il s'agirait d'un synthaxe 1.5, mais là ou je ne comprend pas c'est que si je regarde où se trouve mes JDK, le dossier est :

    C:\Program Files\Java\jdk1.5.0_06

    Et dans Eclipse, la bibliothèque utilisée est : "JRE System Library [jdk1.5.0_06]"

    Donc :

    Quel pourrait-être la source du problème?
    Ou, commen traduire cette ligne en code "compréhensible" ?


    Merci beaucoup

  2. #2
    Membre confirmé Avatar de Scorpyosis
    Homme Profil pro
    Inscrit en
    Janvier 2004
    Messages
    365
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2004
    Messages : 365
    Points : 570
    Points
    570
    Par défaut
    Dans le projet ou tu as mis la source tu fais :
    - click doit sur le projet
    - propriété
    - tu clique sur Jjava Compiler sur la gauche de la fenetre qui est apparue
    - tu mets Compiler compliance level a 5.0

    et voilà
    Les deux principales inventions sorties de Berkeley sont UNIX et le LSD. Difficile de croire à une quelconque coïncidence - Jeremy S. Anderson

    Avant de vouloir qu’un logiciel soit réutilisable, il faudrait d’abord qu’il ait été utilisable - Ralph Johnson

  3. #3
    Membre régulier
    Inscrit en
    Novembre 2004
    Messages
    116
    Détails du profil
    Informations forums :
    Inscription : Novembre 2004
    Messages : 116
    Points : 71
    Points
    71
    Par défaut
    Ca marche, merci beaucoup.

    Avant de mettre le sujet en [résolu],
    J'aurais aimé savoir à quoi correspond cette ligne? (ce qu'elle fait)?

    merci

  4. #4
    Membre régulier
    Inscrit en
    Novembre 2004
    Messages
    116
    Détails du profil
    Informations forums :
    Inscription : Novembre 2004
    Messages : 116
    Points : 71
    Points
    71
    Par défaut
    Autre petite question :

    Au lieu d'avoir l'explorateur qui parcourt uniquement un seul lecteur, je voudrais qu'il puisse permettre d'explorer tous les lecteurs présents (réseaux ou non).

    Pour obtenir la liste des lecteurs, je procède ainsi :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    File&#91;&#93; drive = File.listRoots&#40;&#41;;
    tree = new JTree&#40;drive&#41;;
    tree.setCellRenderer&#40;new FileRenderer&#40;&#41;&#41;;
    Seulement la derniere ligne melance des erreurs :
    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
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
     
    Exception in thread "AWT-EventQueue-0" java.lang.ClassCastException&#58; javax.swing.JTree$DynamicUtilTreeNode
    	at tfe.ExplorateurFichiers.valueChanged&#40;ExplorateurFichiers.java&#58;55&#41;
    	at javax.swing.JTree.fireValueChanged&#40;JTree.java&#58;2399&#41;
    	at javax.swing.JTree$TreeSelectionRedirector.valueChanged&#40;JTree.java&#58;2770&#41;
    	at javax.swing.tree.DefaultTreeSelectionModel.fireValueChanged&#40;DefaultTreeSelectionModel.java&#58;629&#41;
    	at javax.swing.tree.DefaultTreeSelectionModel.notifyPathChange&#40;DefaultTreeSelectionModel.java&#58;1078&#41;
    	at javax.swing.tree.DefaultTreeSelectionModel.setSelectionPaths&#40;DefaultTreeSelectionModel.java&#58;287&#41;
    	at javax.swing.tree.DefaultTreeSelectionModel.setSelectionPath&#40;DefaultTreeSelectionModel.java&#58;170&#41;
    	at javax.swing.JTree.setSelectionPath&#40;JTree.java&#58;1174&#41;
    	at javax.swing.plaf.basic.BasicTreeUI.selectPathForEvent&#40;BasicTreeUI.java&#58;2296&#41;
    	at javax.swing.plaf.basic.BasicTreeUI$Handler.handleSelectionImpl&#40;BasicTreeUI.java&#58;3505&#41;
    	at javax.swing.plaf.basic.BasicTreeUI$Handler.handleSelection&#40;BasicTreeUI.java&#58;3480&#41;
    	at javax.swing.plaf.basic.BasicTreeUI$Handler.mousePressed&#40;BasicTreeUI.java&#58;3461&#41;
    	at java.awt.AWTEventMulticaster.mousePressed&#40;AWTEventMulticaster.java&#58;222&#41;
    	at java.awt.Component.processMouseEvent&#40;Component.java&#58;5485&#41;
    	at javax.swing.JComponent.processMouseEvent&#40;JComponent.java&#58;3126&#41;
    	at java.awt.Component.processEvent&#40;Component.java&#58;5253&#41;
    	at java.awt.Container.processEvent&#40;Container.java&#58;1966&#41;
    	at java.awt.Component.dispatchEventImpl&#40;Component.java&#58;3955&#41;
    	at java.awt.Container.dispatchEventImpl&#40;Container.java&#58;2024&#41;
    	at java.awt.Component.dispatchEvent&#40;Component.java&#58;3803&#41;
    	at java.awt.LightweightDispatcher.retargetMouseEvent&#40;Container.java&#58;4212&#41;
    	at java.awt.LightweightDispatcher.processMouseEvent&#40;Container.java&#58;3889&#41;
    	at java.awt.LightweightDispatcher.dispatchEvent&#40;Container.java&#58;3822&#41;
    	at java.awt.Container.dispatchEventImpl&#40;Container.java&#58;2010&#41;
    	at java.awt.Window.dispatchEventImpl&#40;Window.java&#58;1774&#41;
    	at java.awt.Component.dispatchEvent&#40;Component.java&#58;3803&#41;
    	at java.awt.EventQueue.dispatchEvent&#40;EventQueue.java&#58;463&#41;
    	at java.awt.EventDispatchThread.pumpOneEventForHierarchy&#40;EventDispatchThread.java&#58;242&#41;
    	at java.awt.EventDispatchThread.pumpEventsForHierarchy&#40;EventDispatchThread.java&#58;163&#41;
    	at java.awt.EventDispatchThread.pumpEvents&#40;EventDispatchThread.java&#58;157&#41;
    	at java.awt.EventDispatchThread.pumpEvents&#40;EventDispatchThread.java&#58;149&#41;
    	at java.awt.EventDispatchThread.run&#40;EventDispatchThread.java&#58;110&#41;
    Exception in thread "AWT-EventQueue-0" java.lang.ClassCastException&#58; javax.swing.JTree$DynamicUtilTreeNode
    	at tfe.ExplorateurFichiers.valueChanged&#40;ExplorateurFichiers.java&#58;55&#41;
    	at javax.swing.JTree.fireValueChanged&#40;JTree.java&#58;2399&#41;
    	at javax.swing.JTree$TreeSelectionRedirector.valueChanged&#40;JTree.java&#58;2770&#41;
    	at javax.swing.tree.DefaultTreeSelectionModel.fireValueChanged&#40;DefaultTreeSelectionModel.java&#58;629&#41;
    	at javax.swing.tree.DefaultTreeSelectionModel.notifyPathChange&#40;DefaultTreeSelectionModel.java&#58;1078&#41;
    	at javax.swing.tree.DefaultTreeSelectionModel.setSelectionPaths&#40;DefaultTreeSelectionModel.java&#58;287&#41;
    	at javax.swing.tree.DefaultTreeSelectionModel.setSelectionPath&#40;DefaultTreeSelectionModel.java&#58;170&#41;
    	at javax.swing.JTree.setSelectionPath&#40;JTree.java&#58;1174&#41;
    	at javax.swing.plaf.basic.BasicTreeUI.selectPathForEvent&#40;BasicTreeUI.java&#58;2296&#41;
    	at javax.swing.plaf.basic.BasicTreeUI$Handler.handleSelectionImpl&#40;BasicTreeUI.java&#58;3505&#41;
    	at javax.swing.plaf.basic.BasicTreeUI$Handler.handleSelection&#40;BasicTreeUI.java&#58;3480&#41;
    	at javax.swing.plaf.basic.BasicTreeUI$Handler.mousePressed&#40;BasicTreeUI.java&#58;3461&#41;
    	at java.awt.AWTEventMulticaster.mousePressed&#40;AWTEventMulticaster.java&#58;222&#41;
    	at java.awt.Component.processMouseEvent&#40;Component.java&#58;5485&#41;
    	at javax.swing.JComponent.processMouseEvent&#40;JComponent.java&#58;3126&#41;
    	at java.awt.Component.processEvent&#40;Component.java&#58;5253&#41;
    	at java.awt.Container.processEvent&#40;Container.java&#58;1966&#41;
    	at java.awt.Component.dispatchEventImpl&#40;Component.java&#58;3955&#41;
    	at java.awt.Container.dispatchEventImpl&#40;Container.java&#58;2024&#41;
    	at java.awt.Component.dispatchEvent&#40;Component.java&#58;3803&#41;
    	at java.awt.LightweightDispatcher.retargetMouseEvent&#40;Container.java&#58;4212&#41;
    	at java.awt.LightweightDispatcher.processMouseEvent&#40;Container.java&#58;3889&#41;
    	at java.awt.LightweightDispatcher.dispatchEvent&#40;Container.java&#58;3822&#41;
    	at java.awt.Container.dispatchEventImpl&#40;Container.java&#58;2010&#41;
    	at java.awt.Window.dispatchEventImpl&#40;Window.java&#58;1774&#41;
    	at java.awt.Component.dispatchEvent&#40;Component.java&#58;3803&#41;
    	at java.awt.EventQueue.dispatchEvent&#40;EventQueue.java&#58;463&#41;
    	at java.awt.EventDispatchThread.pumpOneEventForHierarchy&#40;EventDispatchThread.java&#58;242&#41;
    	at java.awt.EventDispatchThread.pumpEventsForHierarchy&#40;EventDispatchThread.java&#58;163&#41;
    	at java.awt.EventDispatchThread.pumpEvents&#40;EventDispatchThread.java&#58;157&#41;
    	at java.awt.EventDispatchThread.pumpEvents&#40;EventDispatchThread.java&#58;149&#41;
    	at java.awt.EventDispatchThread.run&#40;EventDispatchThread.java&#58;110&#41;

    Histoire de tenter le coup, je l'ai mise en commentaires
    J'ai bien mes lecteurs dans l'arborescence (l'icône est celle d'un fichier dont l'icone n'est pas connue). Et je ne peux pas les explorer.

    Bref est ce que quelqu'un sait comment s'y prendre?

    J'ai aussi essayé le code suivant sans succès, erreurssur le setCellRenderer. et lorsque je le met en commentaire, j'ai des pointeurs dans le JTee.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    File&#91;&#93; drive = File.listRoots&#40;&#41;;
    TreeModel&#91;&#93; modele = new TreeModel &#91;drive.length&#93;;
    for &#40;int i=0; i<drive.length ;i++&#41;&#123;
    	modele&#91;i&#93; = new FileTreeModel&#40;drive&#91;i&#93;&#41;;
    &#125;
    tree = new JTree&#40;modele&#41;;
    tree.setCellRenderer&#40;new FileRenderer&#40;&#41;&#41;;

    Merci pour votre aide!

  5. #5
    Membre confirmé Avatar de Scorpyosis
    Homme Profil pro
    Inscrit en
    Janvier 2004
    Messages
    365
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2004
    Messages : 365
    Points : 570
    Points
    570
    Par défaut
    Citation Envoyé par koolway
    Ca marche, merci beaucoup.

    Avant de mettre le sujet en [résolu],
    J'aurais aimé savoir à quoi correspond cette ligne? (ce qu'elle fait)?

    merci
    Tu as plusieurs version de Java, on en est actuellement a la version 1.5 (dite Java 5). Cette version a apporté des nouvelles possibilités qui ne sont biensur pas présentes dans les anciennes versions. En précisant que tu travailles sur Java5, tu "obliges" les personnes qui veulent lancer ton programme a avoir cette version également. Si tu développes en 1.4, il doivent avoir au moins la version 1.4 ( 1.4 ou 1.5 ou bientot 1.6) compatibilité oblige. Cette ligne t'indiquait juste, "Attention vous développez en 1.4, mais vous utilisez des notations de la version 1.5, donc ca le fait pas!"
    Les deux principales inventions sorties de Berkeley sont UNIX et le LSD. Difficile de croire à une quelconque coïncidence - Jeremy S. Anderson

    Avant de vouloir qu’un logiciel soit réutilisable, il faudrait d’abord qu’il ait été utilisable - Ralph Johnson

  6. #6
    Membre régulier
    Inscrit en
    Novembre 2004
    Messages
    116
    Détails du profil
    Informations forums :
    Inscription : Novembre 2004
    Messages : 116
    Points : 71
    Points
    71
    Par défaut
    non je ne parlais pas du message d'erreur, mais de la ligne de code


    Concernant le JTree avec tous les lecteurs disponibles, j'attend toujour vos propositions.. je patauge

  7. #7
    Membre confirmé Avatar de Scorpyosis
    Homme Profil pro
    Inscrit en
    Janvier 2004
    Messages
    365
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2004
    Messages : 365
    Points : 570
    Points
    570
    Par défaut
    Citation Envoyé par koolway
    non je ne parlais pas du message d'erreur, mais de la ligne de code


    Concernant le JTree avec tous les lecteurs disponibles, j'attend toujour vos propositions.. je patauge
    J'avais mal compris désolé.
    Pour pouvoir trier un tableau, il faut pouvoir comparer les objets qui sont à l'intérieur. En java, il y a deux façons de comparer des objets. Soit l'Objet en question implémente l'interface Comparable, soit on crée un Comparator pour faire la comparaison.

    En ce qui concerne ton probleme de JTree, la methode setCellRenderer() prends comme argument un objet qui implement TreeCellRenderer, comme je n'ai pas trouvé Filerenderer dans la javadoc, soit doit être une classe de ton crue, ou que tu as trouvée. Verifies qu'elle implémentes l'interface ci dessus. Au pire utilise DefaultTreeCellRenderer
    Les deux principales inventions sorties de Berkeley sont UNIX et le LSD. Difficile de croire à une quelconque coïncidence - Jeremy S. Anderson

    Avant de vouloir qu’un logiciel soit réutilisable, il faudrait d’abord qu’il ait été utilisable - Ralph Johnson

  8. #8
    Membre régulier
    Inscrit en
    Novembre 2004
    Messages
    116
    Détails du profil
    Informations forums :
    Inscription : Novembre 2004
    Messages : 116
    Points : 71
    Points
    71
    Par défaut
    Merci pour ton explication.

    Pour ce qui est du JTree, le probleme ne vient pas de là...

    cela cause juste un probleme d'affichage, mais la base derrière est pourrie de toute façon.


    Une solution serait de fusionner les TreeModel après les avoir créés pour chaque lecteur.

    ex :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    File&#91;&#93; root = File.listRoots&#40;&#41;;
    TreeModel&#91;&#93; modele = new TreeModel &#91;root.length&#93;;		
    for &#40;int i=0; i < root.length ;i++&#41;&#123;
    	modele&#91;i&#93; = new FileTreeModel&#40;root&#91;i&#93;&#41;;
    	if&#40;i==0&#41;&#123;
    		tree = new JTree&#40;modele&#91;i&#93;&#41;;		
    	&#125;
    	else&#123;				
    		tree.setModel&#40;tree.createTreeModel&#40;modele&#91;i&#93;&#41;&#41;;
    	&#125;			
    &#125;
    la méthode createTreeModel() fait : "Returns a TreeModel wrapping the specified object."

    mais évidement ça serait trop beau que pour être vrai.. :

    The method createTreeModel(Object) from the type JTree is not visible



    Est-ce que quelqu'un aurait une autre idée pour faire ce changement?
    Ou comment fusionner des TreeMode?

  9. #9
    Membre confirmé Avatar de Scorpyosis
    Homme Profil pro
    Inscrit en
    Janvier 2004
    Messages
    365
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2004
    Messages : 365
    Points : 570
    Points
    570
    Par défaut
    Si tu cherches simplement a afficher toute l'arborescence de ton disque, il y a trrés bon tutoriel sur le site de sun http://java.sun.com/docs/books/tutor...s/tree.html#eg
    avec plein d'exemple qui vont t'aider.
    Les deux principales inventions sorties de Berkeley sont UNIX et le LSD. Difficile de croire à une quelconque coïncidence - Jeremy S. Anderson

    Avant de vouloir qu’un logiciel soit réutilisable, il faudrait d’abord qu’il ait été utilisable - Ralph Johnson

  10. #10
    Membre régulier
    Inscrit en
    Novembre 2004
    Messages
    116
    Détails du profil
    Informations forums :
    Inscription : Novembre 2004
    Messages : 116
    Points : 71
    Points
    71
    Par défaut
    finalement j'ai fait plus simple... un combo box avec les lecteurs, un ItemListenner, un petit test pour voir si c'est le premier ou le 2° évenement.
    (ItemListener renvoi 2 ItemEvent => si on choisit le lecteur CD déjà que ca prend du temps pour le faire une fois, deux..et bien ca serait deux fois plus long lool
    ca me rappelle : "Si on était parti 1 heure et quart plus tot on serait arrivé il y a 1h et quart.." )

    et qd on choisit un lecteur, je change tout le FileTreeModel du JTree, avec le lecteur choisit.

    voilaaaa...

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

Discussions similaires

  1. JTree explorateur de fichiers
    Par Ioan dans le forum Codes sources à télécharger
    Réponses: 1
    Dernier message: 19/05/2012, 04h04
  2. Réponses: 2
    Dernier message: 01/06/2004, 13h47
  3. Réponses: 2
    Dernier message: 28/04/2004, 12h25
  4. problème d'acces concurentiel à un fichier
    Par Theoden dans le forum MFC
    Réponses: 2
    Dernier message: 04/03/2004, 10h49
  5. Problème d'E.S. sur fichier avec open
    Par Bubonik software dans le forum C
    Réponses: 6
    Dernier message: 04/02/2004, 20h42

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