TreeNode weiß nicht mehr wer sein Root ist

RealHAZZARD

Erfahrenes Mitglied
Ich habe da ein Problem mit meinem JTree.
Hab mir zu dem JTree noch eigene DeaultMutableTreeNodes gebaut, die wenn der eingebaute TreeSelectionListener es sagt, ihre Kinder aktualisieren.
Beim ersten Mal funktioniert das auch ganz gut, aber dann...
Szenario(ich fange bei Root mit 0 an zu zählen):
Ich markiere eine Node auf Ebene 1. Diese such nach Kindern und trägt diese bei sich ein.
Jetzt markiere ich eines der Kinder (also Enbene 2). Dieses aktualisiert seinen Inhalt auch.
Jetzt markiere ich wieder die ElternNode von vorhin (also Ebene 2).
Wenn ich jetzt wieder auf die KinderNodes (Ebene 2) gehe aktualisieren sich diese sich nichtmehr. Ist auch kein Wunder. Denn ab jetzt kommt auf meine Frage hin, wer denn ihr Root sei, nur noch die Antwort "Ich selbst". Es ist auch egal in welcher Ebene ich das mache (im Grunde genommen sind meine selbstgebauten Nodes eh alle gleich aufgebaut)
So viel dazu.
Jetzt mal zum Quellcode. Ich erspare euch den ganzen Code, da das son den zeitlichen Rahmen zu sehr ausdehnt.
Hier mal meine selbstgebaute Node
Java:
class DataBaseNode extends DefaultMutableTreeNode
{
        private String dbName = "";
        public DataBaseNode (String name)
        {
            super(name);
            dbName = name;
        }
        public boolean isParentConnected ()
        {
            ConnectionNode parent = (ConnectionNode)getParent();
            return parent.isConnected();
        }
//Hier der ProblemBär: (hier drin muss wohl mein Fehler liegen)
        public boolean listTables()
        {
            ArrayList <String> allTables;
//Feststellung der übergeordneten Node
            ConnectionNode parent = (ConnectionNode)getParent();
//listTables mach nur eine SQL-Abfrage(die funktioniert auch)          
if (parent.isConnected())allTables = parent.connection.listTables(getUserObject().toString());
            else return false;
//Erstmal die alten KinderNodes entfernen
            removeAllChildren();
//Jetzt die neuen KinderNodes eintragen          
for (String temp : allTables)
            {
                add(new TableNode(temp));
            }
            return true;
           
        }
    }
Jetzt mein Selectionlistener:
Java:
public void valueChanged(TreeSelectionEvent tse) {
        DefaultMutableTreeNode temp = (DefaultMutableTreeNode) _tree_main.getLastSelectedPathComponent();
        System.out.println("------------------------");
        System.out.println(temp);
        int levelFromRoot=temp.getLevel();
        System.out.println("Root:"+temp.getRoot());
        System.out.println("------------------------");
//        Wenn der Root gewählt wurde
        if (levelFromRoot==0)
        {}
//        Wenn eine ConnectionNode gewählt wurde
        else if (levelFromRoot==1)
        {
            ConnectionNode selectedNode=(ConnectionNode)temp;
            selectedNode.listDatabases();
        }
//        Wenn eine DatenbankNode gewählt wurde
        else if (levelFromRoot==2)
        {
            DataBaseNode selectedNode = (DataBaseNode)temp;
            selectedNode.listTables();       
        }
//        Wenn eine TableNode gewählt wurde
        else if (levelFromRoot==3)
        {
            TableNode selectedNode = (TableNode)temp;
            selectedNode.listColums();       
        }
//        Wenn eine ColumnNode gewählt wurde
        else if (levelFromRoot==4)
        {
            ColumnNode selectedNode = (ColumnNode) temp;
        }
    }

Ich hoffe Ihr könnt mir weiterhelfen.
THX
 
Zurück