Hallo
Bin blutiger Anfaenger in Java und moechte folgendes Listing aus dem o'Reilleys book in der Form abaendern, dass die Pfade in einem Treebaum die Parentverzeichnisse nicht anzeigen. Sprich, wenn man z.b. ins Windows Verzeichnis klickt, moechte ich nicht c:\Windows\System angezeigt haben, sondern nur System.
Leider war mir das nicht moeglich, wenn man den return Wert in der getChild() Methode aendert, dann funktioniert der Baum nicht mehr.
Muss ich da irgendeine Methode von JTree ueberschreiben?
Hoffe die Frage ist nicht zu basic,
lG Armin
Bin blutiger Anfaenger in Java und moechte folgendes Listing aus dem o'Reilleys book in der Form abaendern, dass die Pfade in einem Treebaum die Parentverzeichnisse nicht anzeigen. Sprich, wenn man z.b. ins Windows Verzeichnis klickt, moechte ich nicht c:\Windows\System angezeigt haben, sondern nur System.
Leider war mir das nicht moeglich, wenn man den return Wert in der getChild() Methode aendert, dann funktioniert der Baum nicht mehr.
Muss ich da irgendeine Methode von JTree ueberschreiben?
Hoffe die Frage ist nicht zu basic,
lG Armin
Code:
import javax.swing.*;
import javax.swing.event.*;
import javax.swing.tree.*;
import java.io.File;
public class explorer {
public static void main(String[] args) {
File root = new File("c:\\");
FileTreeModel model = new FileTreeModel(root);
JTree tree = new JTree(model);
// tree.setModel(model);
JScrollPane scrollpane = new JScrollPane(tree);
JFrame frame = new JFrame("FileTreeDemo");
frame.getContentPane().add(scrollpane, "Center");
frame.setSize(400,600);
frame.setVisible(true);
}
}
class FileTreeModel implements TreeModel {
protected File root;
public FileTreeModel(File root) { this.root = root; }
public Object getRoot() { return root; }
public boolean isLeaf(Object node) { return ((File)node).isFile(); }
public int getChildCount(Object parent) {
String[] children = ((File)parent).list();
if (children == null) return 0;
return children.length;
}
public Object getChild(Object parent, int index) {
String[] children = ((File)parent).list();
if ((children == null) || (index >= children.length)) return null;
return new File((File) parent, children[index]);
}
public int getIndexOfChild(Object parent, Object child) {
String[] children = ((File)parent).list();
if (children == null) return -1;
String childname = ((File)child).getName();
for(int i = 0; i < children.length; i++) {
if (childname.equals(children[i])) return i;
}
return -1;
}
public void valueForPathChanged(TreePath path, Object newvalue) {}
public void addTreeModelListener(TreeModelListener l) {}
public void removeTreeModelListener(TreeModelListener l) {}
}