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


Sujet :

Composants Java

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 80
    Points : 69
    Points
    69
    Par défaut JTree
    Bonjour,
    J'ai récuperé ce code pour réalisé un Jtree et j'aimerais qu'il parte du disque et qu'il ne montre que les repertoires et les fichiers txt

    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
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
     
    public class FileTree extends JPanel {
     
    /** Construct a FileTree */
      public FileTree(File dir) {
        setLayout(new BorderLayout());
     
        // Make a tree list with all the nodes, and make it a JTree
        JTree tree = new JTree(addNodes(null, dir));
     
        // Add a listener
        tree.addTreeSelectionListener(new TreeSelectionListener() {
          public void valueChanged(TreeSelectionEvent e) {
            DefaultMutableTreeNode node = (DefaultMutableTreeNode) e
                .getPath().getLastPathComponent();
            System.out.println("You selected " + node);
          }
        });
     
        // Lastly, put the JTree into a JScrollPane.
        JScrollPane scrollpane = new JScrollPane();
        scrollpane.getViewport().add(tree);
        add(BorderLayout.CENTER, scrollpane);
      }
     
      /** Add nodes from under "dir" into curTop. Highly recursive. */
      DefaultMutableTreeNode addNodes(DefaultMutableTreeNode curTop, File dir) {
        String curPath = dir.getPath();
        DefaultMutableTreeNode curDir = new DefaultMutableTreeNode(curPath);
        if (curTop != null) { // should only be null at root
          curTop.add(curDir);
        }
        Vector ol = new Vector();
        String[] tmp = dir.list();
        for (int i = 0; i < tmp.length; i++)
          ol.addElement(tmp[i]);
        Collections.sort(ol, String.CASE_INSENSITIVE_ORDER);
        File f;
        Vector files = new Vector();
        // Make two passes, one for Dirs and one for Files. This is #1.
        for (int i = 0; i < ol.size(); i++) {
          String thisObject = (String) ol.elementAt(i);
          String newPath;
          if (curPath.equals("."))
            newPath = thisObject;
          else
            newPath = curPath + File.separator + thisObject;
          if ((f = new File(newPath)).isDirectory())
            addNodes(curDir, f);
          else
            files.addElement(thisObject);
        }
        // Pass two: for files.
        for (int fnum = 0; fnum < files.size(); fnum++)
          curDir.add(new DefaultMutableTreeNode(files.elementAt(fnum)));
        return curDir;
      }
     
      public Dimension getMinimumSize() {
        return new Dimension(200, 400);
      }
     
      public Dimension getPreferredSize() {
        return new Dimension(200, 400);
      }
     
      /** Main: make a Frame, add a FileTree */
      public static void main(String[] av) {
     
        JFrame frame = new JFrame("FileTree");
        frame.setForeground(Color.black);
        frame.setBackground(Color.lightGray);
        Container cp = frame.getContentPane();
        if (av.length == 0) {
          cp.add(new FileTree(new File(".")));
        } else {
          cp.setLayout(new BoxLayout(cp, BoxLayout.X_AXIS));
          for (int i = 0; i < av.length; i++)
            cp.add(new FileTree(new File(av[i])));}
        frame.pack();
        frame.setVisible(true);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
      }
    }
    Où dois-je le modifier?

  2. #2
    Membre averti Avatar de biozaxx
    Profil pro
    Inscrit en
    Août 2004
    Messages
    403
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 403
    Points : 375
    Points
    375
    Par défaut
    bein faut lire un peu et reflechir un minimum tout est décrit dans le code que tu cites
    comme je suis de très bonne humeur aujourd'hui je vais te filer la soluce 8)

    pour demarrer sur le disque C ou un repertoire particulier au lieu du repertoire courant il faut remplacer ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    if (av.length == 0) { 
         cp.add(new Test(new File("."))); 
    }
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    if (av.length == 0) { 
         cp.add(new Test(new File("C:\\monchemin\\durepertoire"))); 
    }
    ensuite pour afficher uniquement les repertoires et les fichiers text
    il suffit d'aller ou c'est marqué
    // Make two passes, one for Dirs and one for Files.
    la premiere passe verifie si le fichier est de type repertoire ou pas
    il suffit de rajouter un filtre lorsque le fichier n'est pas de type repertoire en verifiant que le nom se fini par txt:

    concretement , remplacer

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    if ((f = new File(newPath)).isDirectory()) 
         addNodes(curDir, f); 
     else {
         files.addElement(thisObject);
    }
    par

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    if ((f = new File(newPath)).isDirectory()) 
                addNodes(curDir, f); 
    else {
           if (newPath.endsWith(".txt")){  
                 files.addElement(thisObject);
           }
    }
    voila ...

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 80
    Points : 69
    Points
    69
    Par défaut
    bon ok j'ai rien dit... mais il y en pour qui le java c'est
    Merci quand même

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

Discussions similaires

  1. [JTree] rafraichissement
    Par nurn dans le forum Composants
    Réponses: 12
    Dernier message: 29/07/2005, 14h41
  2. [JTree]noeud parent dans un jtree
    Par wassimb dans le forum Composants
    Réponses: 5
    Dernier message: 22/03/2004, 14h06
  3. [JTree]problème de rafraichissement
    Par peppena dans le forum Composants
    Réponses: 9
    Dernier message: 20/01/2004, 14h06
  4. [JTree]redimensionnement d'un noeud
    Par grishka dans le forum Composants
    Réponses: 4
    Dernier message: 10/04/2003, 14h33
  5. [JTree] Ouvrir/Fermer l'ensemble des noeuds
    Par Math_Caen dans le forum Composants
    Réponses: 3
    Dernier message: 07/04/2003, 14h01

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