Non ho mai avuto tale necessità, quindi non ho mai provato tale soluzione.
Ad ogni modo, considera una cosa di questo tipo:
quando aggiungi al model un DefaultMutableTreeNode, recupera il relativo path tramite il metodo getPath(). Ottieni così un array di Object. Con questo array costruisci un TreeNode e lo memorizzi, ad esempio, in un ArrayList.
Dopo aver completato la costruzione del model, prima di visualizzare il JTree, richiami, con un ciclo sull'ArrayList, il metodo expandPath() di JTree su ciascun oggetto dell'ArrayList.
In questo modo, forzi la visualizzazione di tutti i nodi (quindi, di tutti i livelli) dell'albero.
Con un po' di codice:
codice:
DefaultMutableTreeNode nodo = ... ;
// dopo aver aggiunto il DefaultMutableTreeNode al model:
Object[] path = nodo.getPath();
arrayList.add( new TreePath(path) );
// prima di visualizzare il JTree:
for(int j=0; j<arrayList.size(); j++) {
tuoJTre.expandPath( (TreePath) arrayList.get(j) );
}
Ciao.