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 :

les titres dans JTree


Sujet :

Composants Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de elghadi_mohamed
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2005
    Messages
    227
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Service public

    Informations forums :
    Inscription : Décembre 2005
    Messages : 227
    Par défaut les titres dans JTree
    Bonjour

    je suis en train d'ecrire un petit code pour m'afficher l'arborescence de mon ordinateur (les dossiers et fichiers) mais mon probleme est au niveau de l'affichage, en fait mon code parcours tous l'ordinateur depuis les reprtoires racines et à chaque repertoire trouves ou fichier je cree une instance de DefaultMutableTreeNode et une instance de File puis je cree un noeud de mon arborescence bref ce que je voudrais est que le chemin ne soit pas afficher en entier dans l'arborescence mais juste le nom du fichier.

    voici une prise d'ecran:


    je passe à chaque fois une instance de File à DefaultMutableTreeNode une fois cree

    Merci de votre aide

  2. #2
    Membre expérimenté
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    282
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 282
    Par défaut
    Salut, pour obtenir uniquement le nom "final" du fichier et pas son path complet il te suffit d'utiliser la méthode .getName() de ton objet File lors de la création de ton node

  3. #3
    Membre éclairé Avatar de elghadi_mohamed
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2005
    Messages
    227
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Service public

    Informations forums :
    Inscription : Décembre 2005
    Messages : 227
    Par défaut
    Citation Envoyé par Napalm51 Voir le message
    Salut, pour obtenir uniquement le nom "final" du fichier et pas son path complet il te suffit d'utiliser la méthode .getName() de ton objet File lors de la création de ton node
    tu as raison je peux faire ça mais je desire garder mes objets File pour une utilisation ulterieure, si je fais comme tu dis j'aurais à recherche de nouveau le fichier selectionne est ce que tu vois ?

    merci

  4. #4
    Membre expérimenté
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    282
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 282
    Par défaut
    Yep j'ai posté un peu vite j'étais justement en train de regarder la doc. Je ne vois qu'un moyen (de mes maigres connaissances en java) ce serait de redéfinir la méthode toString() de DefaultMutableTreeNode pour ne pas appeler le toString() de tes File mais getName() ...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    @Override
    public String toString() {
      if(userObject instanceof File) {
         File tmp = (File)userObject;
         return tmp.getName();
      } else {
         return userObject.toString();
      }
    }

  5. #5
    Membre éclairé Avatar de elghadi_mohamed
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2005
    Messages
    227
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Service public

    Informations forums :
    Inscription : Décembre 2005
    Messages : 227
    Par défaut
    Je vous en remercie beaucoup.

  6. #6
    Expert confirmé
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Par défaut
    Dans ton cas le plus propre aurait été de créer un renderer spécifique, cf le passsage sur les JTrees de ce cours: http://mbaron.ftp-developpez.com/javase/javavisu.pdf

  7. #7
    Rédacteur/Modérateur

    Avatar de bouye
    Homme Profil pro
    Information Technologies Specialist (Scientific Computing)
    Inscrit en
    Août 2005
    Messages
    6 905
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Information Technologies Specialist (Scientific Computing)
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2005
    Messages : 6 905
    Billets dans le blog
    54
    Par défaut
    Citation Envoyé par elghadi_mohamed Voir le message
    [...] en fait mon code parcours tous l'ordinateur depuis les reprtoires racines et à chaque repertoire trouves ou fichier je cree une instance de DefaultMutableTreeNode et une instance de File puis je cree un noeud de mon arborescence [...]
    Deux problemes potentiels dans cette maniere de faire :

    - si le contenu du disque est important, la methode qui genere l'arbre est potentiellement tres longue et peut carrement mener a une OutOfMemoryError.

    - sur les sytemes de type UNIX supportant les liens, cela peut mener a un programme qui boucle indefiniement lors de la creation de l'arbre si jamais on rencontre un cycle. Il est possible de detecter les liens symboliques UNIX en faisant :

    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
      public static boolean isLink(File file)
      {
        try {
          if (!file.exists())
    	return true;
          else
    	{
    	  String cnnpath = file.getCanonicalPath();
    	  String abspath = file.getAbsolutePath();
    	  return !abspath.equals(cnnpath);
    	}
        }
        catch(IOException ex) {
          System.err.println(ex);
          return true;
        }
      }
    Cette solution n'est que partielle.

    Une idee est donc de generer un sous-arbre uniquement quand on etend/ouvre le noeud representant le repertoire (voir JTree.addTreeWillExpandListener(TreeWillExpandListener tel)).

    A noter que FileSystemView peut te permettre de recuperer les icones utilisees par le systeme pour chaque type de fichier.
    Merci de penser au tag quand une réponse a été apportée à votre question. Aucune réponse ne sera donnée à des messages privés portant sur des questions d'ordre technique. Les forums sont là pour que vous y postiez publiquement vos problèmes.

    suivez mon blog sur Développez.

    Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning. ~ Rich Cook

Discussions similaires

  1. center verticalement les titres dans un menu css
    Par ben.IT dans le forum Mise en page CSS
    Réponses: 4
    Dernier message: 09/12/2010, 20h37
  2. Réponses: 0
    Dernier message: 15/03/2007, 13h45
  3. Comment afficher les icones de programme (word..) dans JTree
    Par david06600 dans le forum Composants
    Réponses: 2
    Dernier message: 07/03/2006, 17h50
  4. DBGrid, comment dessiner dans les titres des colonnes
    Par dleu dans le forum Bases de données
    Réponses: 9
    Dernier message: 04/11/2004, 17h49

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