Atualizando um nó em JTree. [Resolvido]

8 respostas
lina

Oi,

Criei minha Arvore recebendo as informações de minha base de dados.

ex:

Carro
–> Ford
-----> KA

Bom, agora fiz uma rotina para adicionar um novo modelo…

ex:

Carro
–> Ford
------> KA
------> Fiesta

Eu tenho certeza de que o mesmo está criando… porém ele não atualiza a minha arvore… tipo, ele não executa o refresh.

Como fazer isso?

Tchauzin

8 Respostas

Bani

reload() no TreeModel da sua árvore.

ViniGodoy

Você disparou o evento tableNodeAdded para a JTree?

lina

Oi,

então, estou usando uma DefaultMutableTreeNode… e ela não tem o reload()…

Já o comando dito pelo Vinny desconheco, e não encontrei informações sobre o mesmo…

só estou utilizando o: addTreeSelectionListener e addTreeExpansionListener…

Poderia me dar exemplo?

Tchauzin

homisinho

Eu estou fazendo um sistema que tem um jTree tbm, e aqui funcionou blz quando inseri um novo nodo. Eu criei um método pra isso.

/** * Adiciona um novo nodo na arvore * Caso o parent == null adiciona de acordo com o tipo * @param parent Tipo DefaultMutableTreeNode, Nodo Pai do que será inserido. * @param child Qualquer tipo de objeto. * @param tipo Tipo inteiro 1:tip1 2:tip2 3:tip3 * @return Tipo Boolean False: gerou uma Exception True: Nodo inserido. */ public Boolean addNodo(DefaultMutableTreeNode parent,Object child, int tipo) { try{ DefaultMutableTreeNode childNode = new DefaultMutableTreeNode(child); if (parent == null) { if(tipo==1) parent = this.tip1; if(tipo==2) parent = this.tip2; if(tipo==3) parent = this.tip3; } this.model.insertNodeInto(childNode, parent,parent.getChildCount()); return (true); }catch(Exception e) { System.out.print("Erro: "+e); return (false); } }

Espero ter ajudado.

lina

Oi,

Então.. eu não consigui usar o comando: this.model.insertNodeInto
pois não trabalho com nenhum DefaultTreeModel.. isso seria propriedade dele né?

estou fazendo assim:

/**
 * Mtodo responsvel por adicionar um carro.
 * 
 * @param		defaultMutableTreeNode
 * 
 * @param		as_carro
 */
public
void			AdicionaNoRede
			(
				DefaultMutableTreeNode 	
							defaultMutableTreeNode,	
				String			as_carro
			)
{	  
	System.out.println(defaultMutableTreeNode.toString());
	//
	// Adiciona um novo carro.
	//		
	defaultMutableTreeNode.add(new DefaultMutableTreeNode(new CarroNode(as_carro)));	
}

Quando não tem nenhum carro na arvore ele adiciona, porém quando já tem 1.. ele não faz nada.. na real ele não carrega a nova lista.. e já recriei ela novamente!

Tchauzin!

homisinho
DefaultTreeModel model;
DefaultMutableTreeNode lista;


lista = new DefaultMutableTreeNode("FORD");
model = new DefaultTreeModel(lista);  

jTree1.setModel(model);

a partir daqui você deve adicionar os nodos novos no seu model.... pra mim tá funcionando..... não sei c é a melhor forma de trabalhar com o jTree, mas esta funcionando.

lina

Oi,

Eu no conseguia ter a referencia de uma DefaultTreeModel para dar o reload, porm analisando melhor utilizei o seguinte comando:

((DefaultTreeModel)io_tree.getModel()).reload();

Muito obrigado a todos pela ajuda!

Tchauzin!

ViniGodoy

É que geralmente eu crio meu próprio TreeModel. O DefaultMutableTreeNode acaba deixando o código muito rebuscado e desorganizado.
Quando li o seu post, achei que vc estivesse fazendo o mesmo, sorry.

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