Jtree só aparece até o 2º nó

Bem galera , depois de uma semana sem sucesso é hora de pedir ajuda . Espero poder contar com o auxilio de vocês .

O código que eu estou postando é uma generalização do código original , pois não faz sentido colocar todo o código quando o que interessa é só parte dele . Ou seja se conseguir resolver o problema nesse código pode crer que eu consigo consertar no meu principal.

Gostaria que dessem uma olhada no código antes . De preferencia executar e deixar aberto enquanto le aqui pra
que fique mais simples de intender o que estou querendo dizer ( eu não sou muito bom nisso ).

Eu gostaria que a na Jtree aparecece os campos do “Objeto.class” como ,‘nome’ , ‘tipo’ , 'Id’
Porém nada que eu coloque a partir do 2º nó aparece na jTree.
Eu fiz testes colocando pra aparecer no segundo nível e funciona , não faço idéia de porque não funciona.

Teoricamente era pra ficar + ou - assim .

[code]/*

  • Tree Teste
    | |
    | -Key a
    | |
    | -Objeto 1
    | | |
    | | -nome : Nome
    | | -Id : ID
    | | -tipo : Tipo
    | -…
    | |
    */[/code]

No entanto fica assim

[code]/*

  • Tree Teste
    | |
    | -Key a
    | |
    | -Objeto 1
    | -…
    | |
    */[/code]

O método que monta a Jtree é esse aqui :

private void jTreeManange() { HashMap<Key,DefaultMutableTreeNode> hierarchy = new HashMap<Key,DefaultMutableTreeNode>(); for(Objeto obj : data) { Key key = obj.getKey(); DefaultMutableTreeNode node = hierarchy.get(key); if(node == null) { hierarchy.put(key,new DefaultMutableTreeNode(key)); node = hierarchy.get(key); DefaultMutableTreeNode acnode = new DefaultMutableTreeNode(obj); acnode.add(new DefaultMutableTreeNode( "Nome : "+obj.getName())); acnode.add(new DefaultMutableTreeNode( "Id : "+obj.getId())); acnode.add(new DefaultMutableTreeNode( "Tipo : "+String.valueOf(obj.getType()))); node.add(new DefaultMutableTreeNode(acnode)); root.add(node); } else { DefaultMutableTreeNode acnode = new DefaultMutableTreeNode(obj); acnode.add(new DefaultMutableTreeNode( "Nome : "+obj.getName())); acnode.add(new DefaultMutableTreeNode( "Id : "+obj.getId())); acnode.add(new DefaultMutableTreeNode( "Tipo : "+String.valueOf(obj.getType()))); node.add(new DefaultMutableTreeNode(acnode)); } } treeModel.reload(); }

Há um problema no seu JTree. Você usa o DefaultMutableTreeNode. Isso complica muito as coisas.

Assim como no JTable o ideal é montar um TableModel próprio, no JTree o ideal é você montar um TreeModel próprio. Isso torna o código mais claro, menos redundante, mais eficiente e te dá mais controle sobre a Tree.

Então, recomendo fortemente que você vença a curva de aprendizado (é longa, eu sei), estude corretamente o funcionamento da JTree, faça o seu model.

Aqui há um exemplo de um TreeModel implementado:
http://www.guj.com.br/posts/list/37821.java#501820

[quote=ViniGodoy]Há um problema no seu JTree. Você usa o DefaultMutableTreeNode. Isso complica muito as coisas.

Assim como no JTable o ideal é montar um TableModel próprio, no JTree o ideal é você montar um TreeModel próprio. Isso torna o código mais claro, menos redundante, mais eficiente e te dá mais controle sobre a Tree.

Então, recomendo fortemente que você vença a curva de aprendizado (é longa, eu sei), estude corretamente o funcionamento da JTree, faça o seu model.

Aqui há um exemplo de um TreeModel implementado:
http://www.guj.com.br/posts/list/37821.java#501820

[/quote]

Ok , eu comecei a fazer a TreeModel ontem , porém não funcionou. Eu vou dar uma olhada no seu exemplo !
Qualquer coisa eu posto aqui !

Ok. E usa a classe que deixei lá como base. facilita muito as coisas.

:smiley:
Deu certo !
O seu exemplo ajudou bastante !
Contudo no meu caso , pegando o seu exemplo e aplicando-o no meu caso
eu teria uma List* de livros e os livros contem o objeto autor .

Eu preciso gerar a jTree com os objetos autores como Nó . Por causa disso eu fiquei preso
á um método que monta um HashMap<autor,List> e uma List pra poder adequar o negocio !
Então eu coloquei pra acionar o método que contrói a hierarquia sempre
que a minha List* for alterada .

Acho que não vou ter problemas , por hora está tudo OK .

Muito obrigado .

E, fala a verdade, fica muito mais fácil e simples de entender com o model, não fica?

Se fica , a legibilidade do código fica ótima !
Nesses casos eu sempre prefiro construir o model proprio !
mas sinceramente eu estava com preguiça de apreender a montar o model da jTree , mas valeu a pena !

Mais uma vez obrigado chará .