Pfade in Tree einbinden

  • Themenstarter Themenstarter mr zed
  • Beginndatum Beginndatum
Status
Nicht offen für weitere Antworten.
M

mr zed

Gast
Guten Tag,
gibt es eine Klasse, die mehrer Dateipfäde, welche ich aus einer Config-Datei auslese, automatisch als einen Tree darstellt?
 
am besten TreeModel implementieren geht wirklich fix, sieht ungefähr so aus:
Code:
import java.io.File;

import javax.swing.event.TreeModelListener;
import javax.swing.tree.TreeModel;
import javax.swing.tree.TreePath;


public class FileTreeModel implements TreeModel{
	
	private File root;
	
	public FileTreeModel(File f){
		root = f;
	}
	
	@Override
	public Object getChild(Object parent, int index) {
		if(parent==null)
			return null;
		File[] files = ((File)parent).listFiles();
		return files[index];			
	}

	@Override
	public int getChildCount(Object parent) {
		if(parent==null)
			return 0;
		return ((File)parent).listFiles().length;
	}

	@Override
	public int getIndexOfChild(Object parent, Object child) {
		if(parent==null)
			return 0;
		File[] files = ((File)parent).listFiles();
		for(int i =0; i < files.length;i++){
			if(files[i].equals((File)child)){
				return i;
			}
		}
		return 0;
	}

	@Override
	public Object getRoot() {
		return root;
	}

	@Override
	public boolean isLeaf(Object node) {
		if(node instanceof File)
			return ((File)node).isFile();
		return false;
	}

	@Override
	public void removeTreeModelListener(TreeModelListener l) {
			
	}

	@Override
	public void valueForPathChanged(TreePath path, Object newValue) {
				
	}
	@Override
	public void addTreeModelListener(TreeModelListener l) {
			
	}

}

Code:
import java.io.File;
import javax.swing.JFrame;
import javax.swing.JTree;


public class TestFrame extends  JFrame {

	public static void main(String[] args) {
		JFrame i = new TestFrame();
		i.setSize(200, 200);
		i.getContentPane().add(new JTree(new FileTreeModel(new File("c:\\"))));	
		i.pack();
		i.setVisible(true);
	}
}

das soll nur die ungefähre funktionsweise verdeutlichen, müsste sogar funktionieren....
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Zurück
Oben