Remover objeto

8 respostas
C

como faço para remover um objeto durante uma iteração?
Dá erro de ConcurrentModificationException....

meu codigo

public void  removeChild(TreeNode treeNo, Integer inti){
            Iterator<Map.Entry<Integer,TreeNode>> it = treeNo.getChildren(); 
            TreeNode no;
               TreeNode nodo = treeNo.getParent();
                   if (it.hasNext()){   
                        Map.Entry<Integer, TreeNode> temp = it.next();   
                     int i=0;   
                        System.out.println(temp.getKey() + " - " + temp.getValue());   
                       // allTree(temp.getValue(), temp.getKey().toString());   
                    
                       Funcionalidade f= (Funcionalidade)temp.getValue().getData();
                        
            
                         treeNo.removeChild(f.getId());
                        
                        
                    }
            
                    FacesContext context = FacesContext.getCurrentInstance();
                    context.getApplication().createValueBinding("#{simpleTreeBean.treeNode}").setValue(context, 
                                                                                                  rootNode);
            
            
            
            
            
            
            
            
            
            
            
                }

8 Respostas

Foxlol

Posta o código todo ai.

FilhoDoRei

Se o seu metodo de remover for recursivo, e necessario que vc passe os dois parametros pois na linha:

treeNo.removeChild(f.getId());

voce esta passando apenas um!

Testa ai e posta suas duvidas!

ViniGodoy

Você precisa usar o remove do iterator. Ele tem?

ViniGodoy

Na verdade, o ideal mesmo é você escrever um TreeModel próprio para sua árvore. Isso evita várias dores de cabeça, deixa o código mais estruturado e mais fácil de manter.

Usar os DefaultMutableTreeNode é realmente muito complicado.

C

esse remove do iterator eu tentei e nao funcionou, tb …
o RemoveChild, apesar de ter o mesmo nome do metodo que o contem, nao eh recursivo, um eh metedo do Bean, outro eh metodo da classe TreeNode
Como se usa o Model proprio?

ViniGodoy

Você já criou um TableModel? A idéia é a mesma, mas você usa para árvore.

Um bom artigo sobre esse assunto é esse aqui:
http://java.sun.com/products/jfc/tsc/articles/jtree/

A vantagem é que seu TreeModel conhece seus objetos de domínio. Então, ao invés de você fazer buscar na árvore diretamente, você faz em suas classes e deixa a árvore SOMENTE para a representação visual da sua estrutura hierarquica.

C

eu to tentando fazer uma arvore recursiva, porem como ela busca do banco a cada vez que preenche um nó para buscar seus “filhos”, isso consome mt tempo e deixa o sistema lerdo…entao, eu queria uma forma de ele construir a arvore a medida que ele expande um nó
So quer para expandir o no, eu preciso saber de pelo menos 1 nivel abaixo do nó pai…e depois que eu expando, e colapso, eu preciso remover da memoria os nós , pq senao os nos ficam expandidos e nao da pra ver os subnos, pois ele so carrega quando eu collapso, entendem? isso tá me dando um trrabalho imenso, vcs tem algum codigo de como construir uma arvore do rich-faces de outra maneira?

C

ok, vou tentar…enquanto isso, como removo da coleção?

Criado 27 de maio de 2008
Ultima resposta 27 de mai. de 2008
Respostas 8
Participantes 4