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 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135
|
import java.awt.Dimension;
import java.io.File;
import javax.swing.*;
import javax.swing.tree.*;
import java.awt.*;
import java.awt.event.*;
import java.util.*;
import javax.swing.event.CellEditorListener;
public class test_explorer_Rep extends JFrame {
private File _roots;
private JTree _dirs;
JPanel p1=new JPanel();
JPanel p2=new JPanel();
private JButton but;
public test_explorer_Rep() {
but=new JButton("recuperer IsChecked ");
p1.setLayout(new GridLayout());
p2.setLayout(new FlowLayout());
DefaultTreeCellRenderer dtcr = new DefaultTreeCellRenderer();
RenduComposant rc = new RenduComposant();
EditComposant ec = new EditComposant();
// taille de la fenetre
setSize(500,500);
// on recupère le dossier parent
_roots = new File("d:\\test");
// on définit notre premier noeud
DefaultMutableTreeNode racine = new DefaultMutableTreeNode(new JCheckBox("Reseau entier"));
// on recupère son contenu grace a getSubDirs
DefaultMutableTreeNode root = getSubDirs(_roots);
// et on l ajoute a notre premier noeud
racine.add(root);
_dirs = new JTree(racine);
_dirs.setCellRenderer(rc);
_dirs.setCellEditor(ec);
_dirs.setEditable(true);
p1.add(_dirs);
p2.add(but);
getContentPane().add(p1,"North");
getContentPane().add(p2,"South");
}
/**
* Méthode récursive permettant de récupérer
* tous les fichiers et sous dossiers d un autre
* @param root un File qui représente le lecteur ou le repertoire de départ
* @return DefaultMutableTreeNode
*/
public DefaultMutableTreeNode getSubDirs(File root) {
// on créé un noeud
DefaultMutableTreeNode racine = new DefaultMutableTreeNode(new JCheckBox(root+""),true);
// on recupère la liste des fichiers et sous rep
File[] list = root.listFiles();
if ( list != null) {
// pour chaque sous rep on appel cette methode => recursivité
for (int j = 1 ; j<list.length ; j++) {
DefaultMutableTreeNode file = null;
if (list[j].isDirectory()) {
file = getSubDirs(list[j]);
racine.add(file);
}
}
}
return racine;
}
//main
public static void main(String[] args) {
test_explorer_Rep ex = new test_explorer_Rep();
ex.setVisible(true);
}
}
// 2 eme classe pour rendre le composant check box
class RenduComposant implements TreeCellRenderer{
public Component getTreeCellRendererComponent(JTree tree, Object obj,
boolean selected, boolean expanded, boolean leaf,
int row, boolean hasFocus){
DefaultMutableTreeNode dmtcr = (DefaultMutableTreeNode)obj;
JCheckBox toto = (JCheckBox)dmtcr.getUserObject();
return toto;
}
}
// 3 eme classe pour editer le composant check box
class EditComposant implements TreeCellEditor{
public void addCellEditorListener(CellEditorListener l){ }
public void cancelCellEditing() { }
public Object getCellEditorValue(){
return this;
}
public boolean isCellEditable(EventObject evt){
if(evt instanceof MouseEvent){
MouseEvent mevt = (MouseEvent) evt;
if (mevt.getClickCount() == 1){
return true;
}
}
return false;
}
public void removeCellEditorListener(CellEditorListener l){}
public boolean shouldSelectCell(EventObject anEvent){
return true;
}
public boolean stopCellEditing(){
return false;
}
public Component getTreeCellEditorComponent(JTree tree, Object obj, boolean isSelected, boolean expanded, boolean leaf, int row){
DefaultMutableTreeNode dmtn = (DefaultMutableTreeNode)obj;
JCheckBox tata=(JCheckBox)dmtn.getUserObject();
tata.setEnabled(true);
return tata;
}
} |
Partager