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)
...
... jetzt meine Methode für die Struktur (übrigens die schöne Methode hab ich irgendwo
von Ebenius gesehen und geklaut thx)
... und der Refresh Button
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
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: