Hallo
Ich möchte den Inhalt einer Datenbank als JTree abbilden. Dazu habe ich eigentlich gleich zwei Fragen:
Die erste ist, ob ich das überhaupt richtig mache oder ob es simplere Lösungen dafür gibt. Die zweite, warum im Gui die neuen Nodes nicht angezeigt werden.
Kurz zur DB: In der Datenbank hat es Gruppen und Produkte. Eine Gruppe kann leer sein oder Gruppen und/oder Produkte enthalten.
Der JTree ist zu beginn noch nicht vollständig, weil er zu gross wäre. Es soll lediglich der Rootnode geladen werden. Falls man ein Node öffnet, soll auf die Datenbank zugegriffen werden und dessen Childnodes (Gruppen und Produkte) geladen werden.
Da ich den DefaultMutableTreeNode nicht gebrauchen kann weil er bereits die Childnodes kennen muss um zu wissen ob er es als ein Leaf oder ein Directory anzeigen soll, habe ich die isLeaf Methode überschrieben.
Jetzt zum eigentlichen Problem: Mache ich das richtig mit dem treeWillExpand? In http://www.java-forum.org/de/viewtopic.php?t=25152 habe ich gesehen, dass mit der getChild-Methode vom Node die neuen Nodes erstellt werden.
Wenn ja, wo vermutet ihr den Fehler, dass es die neuen Nodes nicht anzeigt werden? Das Gui vergrössert sich zwar (Scrollbar erscheint irgendwann) aber es wird nur den Rootnode angezeigt.
Ich möchte den Inhalt einer Datenbank als JTree abbilden. Dazu habe ich eigentlich gleich zwei Fragen:
Die erste ist, ob ich das überhaupt richtig mache oder ob es simplere Lösungen dafür gibt. Die zweite, warum im Gui die neuen Nodes nicht angezeigt werden.
Kurz zur DB: In der Datenbank hat es Gruppen und Produkte. Eine Gruppe kann leer sein oder Gruppen und/oder Produkte enthalten.
Der JTree ist zu beginn noch nicht vollständig, weil er zu gross wäre. Es soll lediglich der Rootnode geladen werden. Falls man ein Node öffnet, soll auf die Datenbank zugegriffen werden und dessen Childnodes (Gruppen und Produkte) geladen werden.
Da ich den DefaultMutableTreeNode nicht gebrauchen kann weil er bereits die Childnodes kennen muss um zu wissen ob er es als ein Leaf oder ein Directory anzeigen soll, habe ich die isLeaf Methode überschrieben.
Code:
ProductNode extends DefaultMutableTreeNode
...
@Override
public boolean isLeaf() {
return true;
}
Code:
GroupNode extends DefaultMutableTreeNode
...
@Override
public boolean isLeaf() {
return false;
}
Jetzt zum eigentlichen Problem: Mache ich das richtig mit dem treeWillExpand? In http://www.java-forum.org/de/viewtopic.php?t=25152 habe ich gesehen, dass mit der getChild-Methode vom Node die neuen Nodes erstellt werden.
Wenn ja, wo vermutet ihr den Fehler, dass es die neuen Nodes nicht anzeigt werden? Das Gui vergrössert sich zwar (Scrollbar erscheint irgendwann) aber es wird nur den Rootnode angezeigt.
Code:
@Override
public void treeWillExpand(TreeExpansionEvent arg0) throws ExpandVetoException {
GroupNode gn = (GroupNode) arg0.getPath().getLastPathComponent();
System.out.println("ID : " + gn.getId());
if (!gn.isLoaded()){
gn.set_Loaded();
MutableTreeNode[] childs = this.getChildsFor(gn);
for (int i = 0; i < childs.length; i++) {
model.insertNodeInto(gn, childs[i], gn.getChildCount());
}
}