Galera, tentei aqui mas não estou conseguindo fazer isso que me parecia ser de certa forma fácil. Seguinte, tenho uma JTree onde tem alguns nodes e que quando eu fosse remontá-la( quando você remonta uma JTree ela perde todos os estados de expansão) eu conseguisse expandir os nodos que estavam expandidos e manter retraídos o que estavam assim.
O que fiz foi o seguinte, adicionei listener de expansion e collapse na jtree:
private HashMap expandedPaths = new HashMap();
private void init(){
//(...)
jtree.addTreeExpansionListener(new javax.swing.event.TreeExpansionListener() {
public void treeCollapsed(javax.swing.event.TreeExpansionEvent evt) {
jtreeTreeCollapsed(evt);
}
public void treeExpanded(javax.swing.event.TreeExpansionEvent evt) {
jtreeTreeExpanded(evt);
}
});
}
private void jtreeTreeCollapsed(javax.swing.event.TreeExpansionEvent evt) {
expandedPaths.remove(evt.getPath().toString());
}
private void jtreeTreeExpanded(javax.swing.event.TreeExpansionEvent evt) {
TreePath tp = evt.getPath();
expandedPaths.put(tp.toString(), tp);
}
// E faço o seguinte para remontar os estados....
public void atualizarListaServidores() {
Iterator it = expandedPaths.keySet().iterator();
while(it.hasNext()){
String tpString = (String)it.next();
TreePath tp = (TreePath)expandedPaths.get(tpString);
int row = jtree.getRowForPath(tp);
jtree.expandRow(row);
}
it=null;
}
O que acontece é que quando pego o row para o meu TreePath ele sempre me retorna -1. Alguém já conseguiu fazer isso??
Valeu pela ajuda…
