JTree Knoten einfügen

redpanda

Grünschnabel
Hallo zusammen,

bin neu hier.
ich bin jetzt schon länger am probieren, komme aber nicht weiter.

Ich habe eine eigene Klasse die TreeModel implementiert.
Darin baue ich mir ein simples Datenmodell für einen JTree zusammen. Mein Datenmodell besteht aus einer ArrayList<TreeObject>, wobei TreeObject lediglich einen String enthält.
Code:
public class MyTreeModel implements TreeModel {

	private ArrayList<TreeModelListener> listeners;
	private ArrayList<TreeObject> data;
	
	public MyTreeModel(ArrayList<TreeObject> data){
		listeners = new ArrayList<TreeModelListener>();
		this.data = data;
	}

	public void addTreeModelListener(TreeModelListener arg0) {
		listeners.add(arg0);
	}

	public Object getChild(Object parent, int index) {
		if (parent == data){
			return data.get(index); 
		}
		return null;		
	}

	public int getChildCount(Object parent) {
		if (parent == data){
			return data.size(); 
		}
		return 0;
	}

	public int getIndexOfChild(Object parent, Object child) {
		if (parent == data){
			return data.indexOf(child);
		}
		return 0;
	}

	public Object getRoot() {
		return data;
	}

	public boolean isLeaf(Object node) {
		if (node.getClass() == ArrayList.class)
			return false;
		return true;
	}

	public void removeTreeModelListener(TreeModelListener arg0) {
		listeners.remove(arg0);
	}
Mein JTree zeigt die Daten korrekt an.

Um nun einen Knoten zu entfernen, habe ich mir folgende Methode für die Model-Klasse gebastelt/ergooglet. Diese bekommt tree.getSelectionPath() übergeben:
Code:
	public void removeNode(TreePath path) {
		Object parent = path.getParentPath().getLastPathComponent();
		Object child = path.getLastPathComponent();
		int index = getIndexOfChild(parent, child);
		
		TreeModelEvent event = new TreeModelEvent( 
				this,
				path.getParentPath(), 
				new int[]{index}, 
				new Object[]{child});
		for( TreeModelListener listener : listeners ){
				listener.treeNodesRemoved( event );
		}
		
	}

Problem ist, dass ich ja noch nichts aus meiner Datenstruktur entfernt habe. Sobald ich in dieser Methode das Objekt child aus meiner ArrayList entferne, verschwindet in der View der komplette JTree.

Weiß jemand was ich falsch mache? Habe diverse Threads, etc. gelesen, da wird meist DefaultMutableTreeNode oder ein DefaultTreeModel verwendet. Ist das zwingend notwendig?

Danke für eventuelle Hilfe sagt

redpanda
 

Neue Beiträge

Zurück