Habe folgenden Code aus einer Website übernommen und ein wenig modifiziert. Habe meine eigene Klasse, FileLoader, integriert.
Nun zu meinem Problem. Manchmal funktioniert der Code und manchmal nicht. Es tauchen folgende zwei Fehlermeldungen auf, allerdings nie zugleich. Was die Fehlermeldungen besagen, weiss ich, komme allerdings nicht dahinter wieso das so ist. Vielleicht sieht jemand einen Fehler im Code.....
Tritt auf, wenn ich zum Beispiel den Programmordner von eclipse anzeigen möchte.
und
Tritt auf, wenn ich zum Beispiel alle Verzeichnisse und Files auf meinem Rechner anzeigen möchte.
Schon mal danke für eventuelle Hilfe.
Sir MacKerberus
Code:
import java.awt.*;
import javax.swing.*;
import javax.swing.tree.*;
import java.io.*;
/** Example tree built out of DefaultMutableTreeNodes.
* 1999 Marty Hall, [url]http://www.apl.jhu.edu/~hall/java/[/url]
*/
public class SimpleTree extends JFrame {
public static void main(String[] args) {
new SimpleTree(args[0]);
}
public SimpleTree(String pathname) {
super("Creating a Simple JTree");
this.setDefaultCloseOperation(EXIT_ON_CLOSE);
Container content = getContentPane();
Object[] hierarchy = (Object[]) FileLoader.createFileHierarchy(pathname);
DefaultMutableTreeNode root = processHierarchy(hierarchy);
JTree tree = new JTree(root);
content.add(new JScrollPane(tree), BorderLayout.CENTER);
setSize(275, 300);
setVisible(true);
}
/** Small routine that will make node out of the first entry
* in the array, then make nodes out of subsequent entries
* and make them child nodes of the first one. The process is
* repeated recursively for entries that are arrays.
*/
private DefaultMutableTreeNode processHierarchy(Object[] hierarchy) {
DefaultMutableTreeNode node =
new DefaultMutableTreeNode(hierarchy[0]);
DefaultMutableTreeNode child;
for(int i=1; i<hierarchy.length; i++) {
Object nodeSpecifier = hierarchy[i];
if (nodeSpecifier instanceof Object[]) // Ie node with children
child = processHierarchy((Object[])nodeSpecifier);
else
child = new DefaultMutableTreeNode(nodeSpecifier); // Ie Leaf
node.add(child);
}
return(node);
}
}
Code:
import java.io.*;
public class FileLoader {
public FileLoader() {
}
public static Object[] createFileHierarchy(String url) {
File _root = new File(url);
Object[] _root_array = _root.listFiles();
Object[] _root_array_return = new Object[_root_array.length];
if(_root_array.length == 0) {
return _root_array;
}
for(int index = 0; index < _root_array.length; index++) {
if(((File)_root_array[index]).isFile()) {
_root_array_return[index] = (Object)_root_array[index];
} else if(((File)_root_array[index]).isDirectory()) {
String file_url = ((File)_root_array[index]).getPath();
file_url = file_url +"/";
_root_array_return[index] = (Object[]) FileLoader.createFileHierarchy(file_url);
}
}
return _root_array_return;
}
}
Nun zu meinem Problem. Manchmal funktioniert der Code und manchmal nicht. Es tauchen folgende zwei Fehlermeldungen auf, allerdings nie zugleich. Was die Fehlermeldungen besagen, weiss ich, komme allerdings nicht dahinter wieso das so ist. Vielleicht sieht jemand einen Fehler im Code.....
Tritt auf, wenn ich zum Beispiel den Programmordner von eclipse anzeigen möchte.
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 0
at SimpleTree.processHierarchy(SimpleTree.java:36)
at SimpleTree.processHierarchy(SimpleTree.java:42)
at SimpleTree.processHierarchy(SimpleTree.java:42)
at SimpleTree.processHierarchy(SimpleTree.java:42)
at SimpleTree.<init>(SimpleTree.java:22)
at SimpleTree.main(SimpleTree.java:12)
und
Tritt auf, wenn ich zum Beispiel alle Verzeichnisse und Files auf meinem Rechner anzeigen möchte.
Exception in thread "main" java.lang.NullPointerException
at FileLoader.createFileHierarchy(FileLoader.java:10)
at FileLoader.createFileHierarchy(FileLoader.java:22)
at SimpleTree.<init>(SimpleTree.java:20)
at SimpleTree.main(SimpleTree.java:12)
Schon mal danke für eventuelle Hilfe.
Sir MacKerberus