# JTree nach setzen eines neuen TreeModels aufklappen



## hilfesucher (15. Jun 2004)

Hallo

ich habe in einem Panel einen JTree liegen. Beim drücken eines Buttons, werden die Daten aus einer Datenbank neu eingelesen und das Model wird dem Baum gesetzt. Das geht auch. Jedoch sollen die Knoten, die vorher aufgeklappt waren auch wieder aufgeklappt werden.
Wie ich das machen soll weiß ich leider nicht.

Zur Info noch ich habe in meinem Baum Objekte einer Klasse die von DefaultMutableTreeNode abgeleitet sind. Mein Model ist von DefaultTreeModel abgeleitet.

Bitte um schnelle hilfe.

Danke


----------



## schalentier (15. Jun 2004)

```
private Enumeration descendantExpandedPathsBeforeDrag;
    private TreePath selectedPathStored;

    public void saveExpandedState()
    {
        descendantExpandedPathsBeforeDrag = jtree.getExpandedDescendants( new TreePath( jroot.getPath() ) );
        selectedPathStored = jtree.getSelectionModel().getSelectionPath();
    }


    public void restoreExpandedState()
    {
        if( descendantExpandedPathsBeforeDrag != null )
        {
            for( Enumeration e = descendantExpandedPathsBeforeDrag; e.hasMoreElements(); )
            {
                TreePath tmpPath = (TreePath) ( e.nextElement() );
                jtree.expandPath(
                        new TreePath( ( (DefaultMutableTreeNode) tmpPath.getLastPathComponent() ).getPath() ) );
            }
        }
        jtree.getSelectionModel().setSelectionPath( selectedPathStored );
    }
```

so mach ichs..

mX


----------



## hilfesucher (15. Jun 2004)

hi danke erstmal.
leider geht dein beispiel bei mir nicht.

hast du eine idee wieso? in der enumeration stehen die pfade drin aber er klappt sie nicht mehr auf.


----------

