Swing TreeModel reload nur scheinbar

Oldboii

Mitglied
Jetzt hab ich ein neues refresh Problem. Ich möchte das TreeModel per Button klick reloaden.
Meine TreeModel Struktur baut auf Daten aus meiner DB auf, wenn sich diese ändern, soll durch den
Buttonklick die Struktur angepasst werden. (gleich vorweg es liegt nicht an der Datenbeschaffung aus der DB, starte ich mein Programm nochmal hat sich die Struktur angepasst)

Java:
private DefaultMutableTreeNode root;
	private DefaultTreeModel jTreeModel;
...
Java:
private JTree getJTree() {
		if (jTree == null) {
			TreeStructure();
			jTree = new JTree(jTreeModel);
			jTree.setEditable(false);
}
		return jTree;
	}

... jetzt meine Methode für die Struktur (übrigens die schöne Methode hab ich irgendwo
von Ebenius gesehen und geklaut thx) 😀

Java:
private void TreeStructure(){
		tobj.ObjektAbfrage();
		root = new DefaultMutableTreeNode(
				"Root");
		Stack<DefaultMutableTreeNode> stack = new Stack<DefaultMutableTreeNode>();
		for (String[] row : tobj.flatData) {
			// Den Stack an Level anpassen
			Iterator<DefaultMutableTreeNode> stackIt = stack
					.iterator();
			for (int level = 0; level < row.length && stackIt.hasNext(); level++) {
				if (!stackIt.next().getUserObject().equals(row[level])) {
					stack.setSize(level);
					break;
				}
			}
			// Wiederaufbau des stacks
			for (int level = stack.size(); level < row.length; level++) {
				String s = row[level];
				DefaultMutableTreeNode child = new DefaultMutableTreeNode(
						s);
				(stack.isEmpty() ? root : stack.peek()).add(child);
				stack.push(child);
			}
		}
		jTreeModel = new DefaultTreeModel(root);
	}

... und der Refresh Button

Java:
jBrefresh.addActionListener(new java.awt.event.ActionListener() {
				public void actionPerformed(java.awt.event.ActionEvent e) {
					tobj.flatData.clear();
					TreeStructure();
					jTreeModel.nodeStructureChanged(root);
					((DefaultTreeModel)jTree.getModel()).reload(root);
					jTree.repaint();
				}
			});

Ich schätze irgendwo gibts nen Haken an meiner Implementierung, so dass das DefaultModel
zwar neu geladen wird aber mit dem gleichen Inhalt?! Ich verstehs nicht ???:L
 
Zuletzt bearbeitet:
Wenn Du sowieso ein neues TreeModel erstellst, warum übergibt's Du es nicht per setModel(neuesTreeModel) an den JTree, der müsste sich danach von alleine aktualisieren.
 
oh man Michael.. du bist schon wieder meine Rettung 😳
vielen vielen Dank, hab eben schon wieder den Wald vor lauter Bäumen nicht gesehen.
Hoffentlich meine letzte Hilfeanfrage für länger 😀
 

Neue Themen


Zurück
Oben