dúvidas de JTree

Galera me ajudem por favor !

estou tentando fazer o seguinte…

Tenho uma JTREE ( é uma arvore de usuários online estilo o msn )
mas ao conectar um usuário eu quero saber como posso alterar o Icone de da lista (Jtree) informando que ele conectou !!!

alguém pode me ajudar please ?

Ola,

Vc tem que mexer no renderer da tree, a classe é javax.swing.tree.DefaultTreeCellRenderer, e se vc quizer saber como, vc pode ver aqui

Legal Bruno valeu !
eu estou tentando colocar o nome normal nos Chields por ex:

Amigos

  • CArlos
    .etc…

mas se eu colocar assim:
no código:
Usuario usuario = new Usuario();
usuario.setNome(“Carlos”);
.
.

DefaultMutableTreeNode child = new DefaultMutableTreeNode(“CARLOS”);
child.setUserObject(usuario); // aqui ele exibe o nome do objecto…
pasta.add(child);

Amigos

  • br.com.teste.Usuario@4345
  • br.com.teste.Usuario@1235

como eu faço pra manter meu Objeto para eu trabalhar depois nos Eventos capturando pelo getUserObject();
mas que exiba na tela o Nome da pessoa ???
no caso:

Amigos
- carlos ( mas carregando um objeto dele interno );

Ola,

Vc deve ter sobrescrvido o metodo “getTreeCellRendererComponent”, se sim só vc pegar o valor, na assinatura:
(JTree tree, Object value… que ele é o que vc inseriu na árvore, no caso o DefaultMutableTreeNode, dae vc faz o cast…:

public Component getTreeCellRendererComponent(JTree tree, Object value, boolean sel, boolean expanded, boolean leaf, int row, boolean hasFocus){ if(DefaultMutableTreeNode.class.isInstance(value)){ DefaultMutableTreeNode node = (DefaultMutableTreeNode) value; Usuario user = (Uusuario) node.getUserObject(); } ... e por ae vai..

Bruno talvez vc saiba disso também…
as vezes minha JTree não é exibida.

quer dizer: em modo debug eu vi e os objetos esta sendo adicionados perfeitamente…
mas ela não é exibida.
daí eu Paro a Aplicação e dou um Run Aplication novamente daí VAI !!!
ou veja as vezes exibe as vezes não!
estranho pois estão sendo adicionados perfeitamente…

O que pode ser essa loucura ?? rs

OBS:
No final eu coloco
tree.repaint();

mas nem assim adianta…