Como usar JTree  XML
Índice dos Fóruns » Java Avançado
Autor Mensagem
cleiton herrmann
JavaEvangelist
[Avatar]

Membro desde: 08/06/2006 11:38:58
Mensagens: 432
Localização: Cascavel - PR
Offline

Olá Pessoal, essa dúvida pode parecer meio simples para se perguntar no grupo de tópicos Avançados, porém, eu já peguei 6 exemplos de como usar o JTree e não consegui usar.

Eu uso o NetBeans 5.0, será que alguem sabe alguma maneira prática de usar esse componente, alguma maneira de manipular ele graficamente no NetBeans, ou mesmo um exemplo da criação e manipulação de um JTree.

Desde já grato !!!
[MSN]
davidbuzatto
Moderador
[Avatar]

Membro desde: 07/08/2004 23:47:57
Mensagens: 4013
Localização: Vargem Grande do Sul - SP
Offline

kra, vc num vai conseguir manipular um jtree graficamente como vc disse.

da uma olhada na documentação na class JTree e no pacote javax.swing.tree q vc vai achar o q precisa.

caso não consiga fazer nada, posta ai o q vc quer fazer q a gente ajuda

falow!

Seja educado. Agradeça quem te ajudou. Não custa nada.
Dúvidas de Java? Utilize o fórum! Não respondo via MP.

"Any fool can write code that a computer can understand. Good programmers write code that humans can understand." (Fowler)
"A vida é um escândalo, e no final dá sempre errado. O que humaniza o homem é o fracasso."

http://davidbuzatto.com.br | GitHub | uHunt | CV Lattes | Last.fm
[WWW]
cleiton herrmann
JavaEvangelist
[Avatar]

Membro desde: 08/06/2006 11:38:58
Mensagens: 432
Localização: Cascavel - PR
Offline

Olá davidbuzatto, blz?

na verdade o que eu queria é um exemplo simples da utilização do JTree, criando uma estrutura simples tipo

uma coisa bem simples mesmo, pois nunca trabalhei com esse componente. vc tinha sugerido pra eu olhar a documentacao, mas o exemplo que tem lah é muito grande, nao sei, eu coloco aqueles DefaultMutableTreeNode, faço meu Jtree = new Jtree(o node que eu criei) i nao consigo fazer funcionar, sei lah haiuhaiaaiha. Ó, eu to fazendo assim ó

eu uso o NetBeans, dai eu arrastei um JTree pra minha tela, dei um nome pra ele de jtInformacoes, ai no construtor da classe, depois do initComponents eu coloquei o codigo seguinte só pra testar


mas ai quando eu rodo a aplicacao, aparece o JTree original na tela, sem nenhuma modificação.

o que eu queria mesmo é só um exemplo simples pra eu entender como funciona, se vc ou alguem puder postar um codigozinhu ai eu agradeco, pois jah faz 3 dias que to tentando usar esse componente e nada.

valeu t+
[MSN]
hlds
Virtual Machine Man

Membro desde: 29/03/2006 22:18:39
Mensagens: 602
Offline

olha este site da sun: http://java.sun.com/docs/books/tutorial/uiswing/components/tree.html

e ai ajudou?
cleiton herrmann
JavaEvangelist
[Avatar]

Membro desde: 08/06/2006 11:38:58
Mensagens: 432
Localização: Cascavel - PR
Offline

Olá pessoal, td bom?

Ainda nao consegui fazer funcionar, vou colocar o meu código ai, pq eu sinceramente nao sei o q q tah faltando. No construtor da minha tela, eu faço

e no evento MouseClicked da minha tabela eu chamo esse método preencherJTree();

ai quando eu rodo minha aplicacao e clico em uma linha da tabela, nao acontece nada, nem da erro, neim aparece nada no jtInformacoes, que é o meu objeto JTree...
Nos exemplos que vi na internet, e no How to use da sum, eu nao vejo nada de diferente, eu simplesmente adaptei o exemplo de acordo com minhas necessidades, mas nao funciona. O que será que está faltando pra isso ai funcionar?
Desde ja meu obrigado, t+
[MSN]
luis.txt
JavaChild
[Avatar]

Membro desde: 30/04/2008 09:26:07
Mensagens: 127
Localização: Minas
Offline

Bem, também tive dificuldade para encontrar um exemplo de uso do JTree.
Por isso resolvi postar aqui a solução que encontrei..
Há outros objetos gráficos na classe, mas eu resolvi postar toda a estrutura, fica melhor compreendido, principalmente depois de compilado::

//Classe que inicializa a aplicação:


//Classe que implementa o JTree (APENAS IMPLEMENTA O JTREE, CABE A VC IMPLEMENTAR AS FUNCIONALIDADES)








This message was edited 1 time. Last update was at 11/06/2008 12:06:55


http://clway.wordpress.com
Iron Maiden's gonna get you,
No matter how far.
[Email] [WWW] [MSN]
ViniGodoy
Moderador
[Avatar]

Membro desde: 11/12/2006 08:22:01
Mensagens: 20580
Localização: Curitiba/PR
Offline

Ao invés de usar o DefaultMutableTreeNode, criem um TreeModel próprio.
É muito mais fácil.

Considerem uma classe de Livros, que contém uma lista de autores, como essa aqui:


A classe do Autor não é muito diferente:


Ok. Agora queremos uma árvore com vários livros e a lista dos seus autores. O primeiro passo, é criar um modelo para essa árvore. Fazemos isso estendendo TreeModel:



Com o model pronto, agora só falta desenhar uma Tree usando esse model. Aqui está uma telinha que faz exatamente isso, para servir de demonstração:


Escrever o seu próprio TreeModel não só é mais fácil para Trees maiores, como também deixa o código mais separado e orientado a objetos. Note que a minha classe de interface gráfica praticamente não se preocupou com a lógica da tree em si. Quem faz isso é o modelo. Esse decoplamento é util, caso você queira reaproveitar a tree em outras telas, já que não é a tela em si que conhece a estrutura da árvore.

Também tem a vantagem de que o TreeModel manipula diretamente as suas classes de negócio. Para tornar a Tree modificável, você deve inserir métodos no model, e notificar os listeners de que a árvore mudou, e onde. Anexo a esse post, está um AbstractTreeModel que costumo a usar nos meus programas, retirado dos próprios exemplos da Sun.

Ele já cuida da parte dos listeners de eventos, além de fornecer métodos práticos para notificar a tree sobre mudanças.

A minha sugestão (e eu já sofri muito da outra forma antes de descobrir essa) é que vocês não usem os DefaultMutableTreeNodes para nada.
 Nome do arquivo AbstractTreeModel.java [Disk] Download
 Descrição Facilita a construção de TreeModels.
 Tamanho 7 Kbytes
 Baixado:  645 vez(es)

 Nome do arquivo treeSample.zip [Disk] Download
 Descrição Exemplo com AbstractTreeModel. Mostra também como adicionar e remover nós dinamicamente.
 Tamanho 7 Kbytes
 Baixado:  377 vez(es)

This message was edited 6 times. Last update was at 11/03/2010 09:05:18


@ViniGodoy - Lattes

Tem dúvidas de Java? Poste no fórum! Não respondo dúvidas de java via MP!

Ponto V! - Desenvolvimento de Jogos Profissional - @Pontov - Facebook
Projeto Towel - Swing de uma forma inteligente (Novo lar do ObjectTableModel e do Auto-Filtro).

Ei... você está usando DefaultTableModel no seu projeto??
Não faça isso! Veja: http://www.guj.com.br/posts/list/15/199067.java#1001295
[WWW]
luis.txt
JavaChild
[Avatar]

Membro desde: 30/04/2008 09:26:07
Mensagens: 127
Localização: Minas
Offline

com o seu exemplo realmente ficou muito melhor!

valeu!

http://clway.wordpress.com
Iron Maiden's gonna get you,
No matter how far.
[Email] [WWW] [MSN]
lidianycs
JavaBaby
[Avatar]

Membro desde: 08/11/2006 18:51:17
Mensagens: 81
Localização: Midgart
Offline

Muito interessante seu exemplo!
Obrigada!
hacebe
Thread.start()

Membro desde: 08/04/2008 16:11:23
Mensagens: 41
Offline

Opa... bom dia!

resuscitando um pouco o tópico...

Pessoal, fiz o código deu certim...
ele aparece e talz...

mas tipo

se eu quiser repopular essa tree, como faço?

grato!
ViniGodoy
Moderador
[Avatar]

Membro desde: 11/12/2006 08:22:01
Mensagens: 20580
Localização: Curitiba/PR
Offline

Basta passar um novo List para o seu model, e disparar o evento que os dados da tree mudaram.

@ViniGodoy - Lattes

Tem dúvidas de Java? Poste no fórum! Não respondo dúvidas de java via MP!

Ponto V! - Desenvolvimento de Jogos Profissional - @Pontov - Facebook
Projeto Towel - Swing de uma forma inteligente (Novo lar do ObjectTableModel e do Auto-Filtro).

Ei... você está usando DefaultTableModel no seu projeto??
Não faça isso! Veja: http://www.guj.com.br/posts/list/15/199067.java#1001295
[WWW]
rafaelmpc
Smalltalk

Membro desde: 17/11/2009 23:46:09
Mensagens: 4
Offline

Rodei o exempo assim, porem tenho uma dúvida: Tendo 2 tree(arvoreA e arvoreB) como fazer para mover uma "folha" da arvoreA para a arvoreB?
ViniGodoy
Moderador
[Avatar]

Membro desde: 11/12/2006 08:22:01
Mensagens: 20580
Localização: Curitiba/PR
Offline

Sua dúvida está em manipular modelos ou em fazer a movimentação em si?

@ViniGodoy - Lattes

Tem dúvidas de Java? Poste no fórum! Não respondo dúvidas de java via MP!

Ponto V! - Desenvolvimento de Jogos Profissional - @Pontov - Facebook
Projeto Towel - Swing de uma forma inteligente (Novo lar do ObjectTableModel e do Auto-Filtro).

Ei... você está usando DefaultTableModel no seu projeto??
Não faça isso! Veja: http://www.guj.com.br/posts/list/15/199067.java#1001295
[WWW]
rafaelmpc
Smalltalk

Membro desde: 17/11/2009 23:46:09
Mensagens: 4
Offline

Gostaria de mover de uma estrutura para outra, ou seja:

1° Mometo
arvoreA
- Nivel A
- Item 1
- Item 2
-Nivel B
- Item 1

arvoreB
- Nivel C
- Item 1
- Item 2

2° Momento: após arrastar o "Nivel B" da arvoreA para o "Nivel C" da arvore B o resultado ficaria
arvoreA
- Nivel A
- Item 1
- Item 2

arvoreB
- Nivel C
- Item 1
- Item 2
- Nivel B
- Item 1

resultado toda estrutura foi copiada para baixo do "Nivel C" da arvoreB.

Valeu pela rapidez da resposta, muito obrigado
ViniGodoy
Moderador
[Avatar]

Membro desde: 11/12/2006 08:22:01
Mensagens: 20580
Localização: Curitiba/PR
Offline

Ótimo... mas voltando a minha pergunta....

Sua dúvida está em manipular modelos ou em fazer a movimentação em si?

Ou seja, você não sabe como escrever o treemodel, ou você não sabe como habilitar o drag&drop?

This message was edited 1 time. Last update was at 19/11/2009 08:16:45


@ViniGodoy - Lattes

Tem dúvidas de Java? Poste no fórum! Não respondo dúvidas de java via MP!

Ponto V! - Desenvolvimento de Jogos Profissional - @Pontov - Facebook
Projeto Towel - Swing de uma forma inteligente (Novo lar do ObjectTableModel e do Auto-Filtro).

Ei... você está usando DefaultTableModel no seu projeto??
Não faça isso! Veja: http://www.guj.com.br/posts/list/15/199067.java#1001295
[WWW]
 
Índice dos Fóruns » Java Avançado
Ir para:   
Powered by JForum 2.1.8 © JForum Team