Salut tout le monde !
Je suis encore un novice dans java et je me demandais c'est quooi un vector parce que j'en ai déjà entendu parlé ou vu dans des codes mais je vois pas précisement ce que c'est ! Est-ce que c'est une sorte de tableau dynamique ?
Sinon moi en ce moment j'essaye de me fair eun petit explorateur, et franchement j'ai beaucoup de mal ! J'ai déjà un début d'arborescence que j'ai fait en modifiant une source d'ici !
package XploS.model;
import java.lang.*;
import java.io.*;
import javax.swing.*;
import javax.swing.tree.*;
import java.awt.HeadlessException;
import javax.swing.event.*;
import java.awt.*;
import java.awt.event.*;
import java.util.Iterator;
/**
* @author Frederic FOURGEOT
* @version 1.0
*/
public class JTreeFolder extends JFrame {
protected DefaultMutableTreeNode racine;
protected JTree tree;
protected JScrollPane scrollpane;
final static int MAX_LEVEL = 1; // niveau max de descente "direct" dans l'arborescence
/**
* Sous-classe FSNode
* @author Frederic FOURGEOT
* @version 1.0
*/
private class FSNode extends DefaultMutableTreeNode {
File file; // contient le fichier lié au noeud
/**
* Constructeur non visible
*/
private FSNode() {
super();
}
/**
* Constructeur par initialisation
* @param userObject Object
*/
FSNode(Object userObject) {
super(userObject);
}
/**
* Constructeur par initialisation
* @param userObject Object
* @param newFile File
*/
FSNode(Object userObject, File newFile) {
super(userObject);
file = newFile;
}
/**
* Definit le fichier lie au noeud
* @param newFile File
*/
public void setFile(File newFile) {
file = newFile;
}
/**
* Renvoi le fichier lie au noeud
* @return File
*/
public File getFile() {
return file;
}
}
/**
* Constructeur
* @throws HeadlessException
*/
public JTreeFolder() throws HeadlessException {
File[] drive;
tree = new JTree();
// création du noeud supérieur
racine = new DefaultMutableTreeNode("Poste de travail");
// création d'un noeud pour chaque lecteur
drive = File.listRoots();
for (int i = 0 ; i < drive.length ; i++) {
FSNode node = new FSNode(drive[i], drive[i]);
addFolder(drive[i], node); // on descend dans l'arborescence du lecteur jusqu'à MAX_LEVEL
racine.add(node);
}
// Gestion d'evenement sur JTree (on écoute les evenements TreeExpansion)
tree.addTreeExpansionListener(new TreeExpansionListener() {
public void treeExpanded(TreeExpansionEvent e) {
// lorsqu'un noeud est ouvert
// on descend dans l'arborescence du noeud jusqu'à MAX_LEVEL
TreePath path = e.getPath();
FSNode node = (FSNode)path.getLastPathComponent();
addFolder(node);
((DefaultTreeModel)tree.getModel()).reload(node); // on recharge uniquement le noeud
}
public void treeCollapsed(TreeExpansionEvent e) {
// lorsqu'un noeud est refermé
//RIEN
}
});
// alimentation du JTree
DefaultTreeModel model = new DefaultTreeModel(racine);
tree.setModel(model);
// ajout du JTree au formulaire
scrollpane = new JScrollPane();
getContentPane().add(scrollpane, BorderLayout.CENTER);
scrollpane.getViewport().add(tree, null);
setDefaultCloseOperation(EXIT_ON_CLOSE);
}
/**
* MAIN
* @param arg
*/
public static void main(String[] arg)
{
JTreeFolder Arbre = new JTreeFolder();
Arbre.setTitle("Arborescence");
Arbre.setSize(300,400);
Arbre.setVisible(true);
}
/**
* Recuperation des sous-elements d'un repertoire
* @param driveOrDir
* @param node
*/
public void addFolder(File driveOrDir, DefaultMutableTreeNode node) {
setCursor(new Cursor(3)); // WAIT_CURSOR est DEPRECATED
addFolder(driveOrDir, node, 0);
setCursor(new Cursor(0)); // DEFAULT_CURSOR est DEPRECATED
}
/**
* Recuperation des sous-elements d'un repertoire
* (avec niveau pour récursivité et arrêt sur MAX_LEVEL)
* @param driveOrDir File
* @param node DefaultMutableTreeNode
* @param level int
*/
private void addFolder(File driveOrDir, DefaultMutableTreeNode node, int level) {
File[] fileList;
fileList = driveOrDir.listFiles();
// on ne cherche pas plus loin que le niveau maximal définit
if (level > MAX_LEVEL - 1) {return;}
// pour chaque élément
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);
}
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) {
// Exception levée lorsque lecteur vide (ex : lecteur disquette) par fileList.length
return;
}
}
/**
* Recuperation des sous-elements d'un noeud
* @param node
*/
public void addFolder(FSNode node) {
setCursor(new Cursor(3)); // WAIT_CURSOR est DEPRECATED
for (int i = 0 ; i < node.getChildCount() ; i++) {
addFolder(((FSNode)node.getChildAt(i)).getFile(), (FSNode)node.getChildAt(i));
}
setCursor(new Cursor(0)); // DEFAULT_CURSOR est DEPRECATED
}
}
En fait dans cette source j'ai modifié un truc pour pas que sa plante si il n'y a pas de disquette dans le lecteur et j'ai enlevé la recursivité si on ouvre un dossier !
voilà donc pour le moment mon arborescence je vais la laisser comme ca et je vais m'attaquer a l'affichage des fichiers ! Par contre je sais pas dans quoi l'affiché : un panel ou une jlist ??? je sais pas parce que un jpanel sa risque d'etre compliqué mais je serai plus libre tandis que une jlist serait peut etre plus simple mais plus restreint ! je me tâte !!
niarf