JTree

Résolu
cs_bygui Messages postés 51 Date d'inscription lundi 10 avril 2006 Statut Membre Dernière intervention 16 juin 2008 - 14 avril 2006 à 14:12
Twinuts Messages postés 5375 Date d'inscription dimanche 4 mai 2003 Statut Modérateur Dernière intervention 14 juin 2023 - 14 avril 2006 à 16:55
Bonjour,
Voila sur le net j'ai trouvé un explorateur de repertoire très convenable pour mon application mais il presente un gros problème.
En effet, il enregistre les noms de tous les fichiers du repertoire courant mais aussi des sous repertoires...
Comme je veux l'appliquer à la racine du disque, même si j'ai mis un filtre pour selectionner qu'un type de fichier, sa rame....
pourriez-vous me dire se qu'il faut modifier:

<HR>
public class FileTree extends JPanel {
private static final long serialVersionUID = 1L;


/** 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 = null;
if (curPath.equals("."))
//newPath = thisObject;
System.out.println("a");

else
newPath = curPath + File.separator + thisObject;
if ((f = new File(newPath)).isDirectory())
addNodes(curDir, f);
else {
if (newPath.endsWith(".txt")) {
files.addElement(thisObject);
System.out.println(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("c:")));
} 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);
}
}


<HR>

Merci

3 réponses

cs_bygui Messages postés 51 Date d'inscription lundi 10 avril 2006 Statut Membre Dernière intervention 16 juin 2008
14 avril 2006 à 16:38
Bon bin je vais me donner tous seul la reponse:
Regarde dans les codes fournis par le site, il y a un exemple qui est exactement se que tu ve faire....
3
cs_bygui Messages postés 51 Date d'inscription lundi 10 avril 2006 Statut Membre Dernière intervention 16 juin 2008
14 avril 2006 à 16:39
Tu es le meilleur!!!
Mais la prochaine fois faut que j'evite de poster pour rien...
0
Twinuts Messages postés 5375 Date d'inscription dimanche 4 mai 2003 Statut Modérateur Dernière intervention 14 juin 2023 111
14 avril 2006 à 16:55
Suis mdrrrr

WORA
0
Rejoignez-nous