2012-10-02 53 views
5

Este es un método mío que se llama cada vez que se agrega un nuevo nodo. Necesito que el modelo se borre cada vez. El DefaultListModel tiene un método .clear(). El DefaultTreeModel no funciona. ¿Ayuda?¿Cómo borro un modelo de JTree? (Eliminando todos los nodos)

public void fillUserList(){ 

    List<User> userFriends = ClientController.getInstance().getPrieteniiUserului(user); 

    for(int i=0;i<userFriends.size();i++){ 
     User user = userFriends.get(i); 

     model.insertNodeInto(new DefaultMutableTreeNode(user.getNume()), root, i); 

    } 

    System.out.println(userFriends); 

} 
+1

¿Intentó utilizar el nodo raíz y utilizó el método 'removeAllChildren()'? – DejanLekic

+0

No funciona. –

+1

Funciona. Pero también necesitaba llamar a model.reload(). –

Respuesta

4

Lo resolví. El nuevo código luce así.

public void fillUserList(){  
    List<User> userFriends = ClientController.getInstance().getPrieteniiUserului(user); 
    root.removeAllChildren(); //this removes all nodes 
    model.reload(); //this notifies the listeners and changes the GUI 
    for(int i=0;i<userFriends.size();i++){ 
     User user = userFriends.get(i); 
     model.insertNodeInto(new DefaultMutableTreeNode(user.getNume()), root, i);   
    } 
} 
1

Si realmente se necesita para eliminar todos los nodos incluyendo nodo raíz debe hacer modelo nulo. De esta manera:

mytree.setModel(null) 
Cuestiones relacionadas