Expandir JTree

7 respostas
Henrique.tenorio

Gostaria de expandir um caminho de uma JTree como abaixo:

Home +Abacaxi +20_05_2012 +Amostra1 foto1 +Banana +Manga

O caminho a ser expandido então seria, Home\Abacaxi\20_05_2012. Então tentei

DefaultMutableTreeNode home = new DefaultMutableTreeNode("Home");
        DefaultMutableTreeNode ab = new DefaultMutableTreeNode("Abacaxi");
        DefaultMutableTreeNode data = new DefaultMutableTreeNode("20_05_2012");
        DefaultMutableTreeNode amostra = new DefaultMutableTreeNode("Amostra1");
        
        home.add(ab);
        ab.add(data);
        data.add(amostra);
                
        TreePath treePath = new TreePath(new Object[]{home, ab, data});
        
        jTree1.expandPath( treePath);

E não acontece nada, pois tenho um ouvinte para o evento de expansão, esta expansão acima não funcionou.

Alguém já tentou algo assim ou propõe alguma solução?

7 Respostas

KamikazeBr

Estranho, aqui funcionou…

Pergunta: Como esta inicializando seu jTree1?

ViniGodoy

Antes de começar a ter problemas:

Henrique.tenorio
KamikazeBr:
Estranho, aqui funcionou...

Pergunta: Como esta inicializando seu jTree1?

Código:

jTree1 = new javax.swing.JTree();

treeNode1 = new javax.swing.tree.DefaultMutableTreeNode("Home");
treeNode2 = new javax.swing.tree.DefaultMutableTreeNode("Abacaxi");
treeNode3 = new javax.swing.tree.DefaultMutableTreeNode("20_05_2012");
treeNode4 = new javax.swing.tree.DefaultMutableTreeNode("Amostra1");
treeNode3.add(treeNode4);
treeNode4 = new javax.swing.tree.DefaultMutableTreeNode("Amostra2");
treeNode3.add(treeNode4);
treeNode2.add(treeNode3);
treeNode1.add(treeNode2);
treeNode2 = new javax.swing.tree.DefaultMutableTreeNode("Banana");
treeNode3 = new javax.swing.tree.DefaultMutableTreeNode("20_05_2012");
treeNode4 = new javax.swing.tree.DefaultMutableTreeNode("Amostra1");
treeNode3.add(treeNode4);
treeNode4 = new javax.swing.tree.DefaultMutableTreeNode("Amostra2");
treeNode3.add(treeNode4);
treeNode2.add(treeNode3);
treeNode1.add(treeNode2);
treeNode2 = new javax.swing.tree.DefaultMutableTreeNode("Manga");
treeNode3 = new javax.swing.tree.DefaultMutableTreeNode("20_05_2012");
treeNode4 = new javax.swing.tree.DefaultMutableTreeNode("Amostra1");
treeNode3.add(treeNode4);
treeNode4 = new javax.swing.tree.DefaultMutableTreeNode("Amostra2");
treeNode3.add(treeNode4);
treeNode2.add(treeNode3);
treeNode1.add(treeNode2);

jTree1.setModel(new javax.swing.tree.DefaultTreeModel(treeNode1));

jTree1.addTreeWillExpandListener(new javax.swing.event.TreeWillExpandListener() {
    public void treeWillCollapse(javax.swing.event.TreeExpansionEvent evt)throws javax.swing.tree.ExpandVetoException {
    }
    public void treeWillExpand(javax.swing.event.TreeExpansionEvent evt)throws javax.swing.tree.ExpandVetoException {
        jTree1TreeWillExpand(evt);
    }
});
jTree1.addTreeSelectionListener(new javax.swing.event.TreeSelectionListener() {
    public void valueChanged(javax.swing.event.TreeSelectionEvent evt) {
        jTree1ValueChanged(evt);
    }
});

jScrollPane1.setViewportView(jTree1);
KamikazeBr
Henrique.tenorio:
KamikazeBr:
Estranho, aqui funcionou...

Pergunta: Como esta inicializando seu jTree1?

Código:

jTree1 = new javax.swing.JTree();

treeNode1 = new javax.swing.tree.DefaultMutableTreeNode("Home");
treeNode2 = new javax.swing.tree.DefaultMutableTreeNode("Abacaxi");
treeNode3 = new javax.swing.tree.DefaultMutableTreeNode("20_05_2012");
treeNode4 = new javax.swing.tree.DefaultMutableTreeNode("Amostra1");
treeNode3.add(treeNode4);
treeNode4 = new javax.swing.tree.DefaultMutableTreeNode("Amostra2");
treeNode3.add(treeNode4);
treeNode2.add(treeNode3);
treeNode1.add(treeNode2);
treeNode2 = new javax.swing.tree.DefaultMutableTreeNode("Banana");
treeNode3 = new javax.swing.tree.DefaultMutableTreeNode("20_05_2012");
treeNode4 = new javax.swing.tree.DefaultMutableTreeNode("Amostra1");
treeNode3.add(treeNode4);
treeNode4 = new javax.swing.tree.DefaultMutableTreeNode("Amostra2");
treeNode3.add(treeNode4);
treeNode2.add(treeNode3);
treeNode1.add(treeNode2);
treeNode2 = new javax.swing.tree.DefaultMutableTreeNode("Manga");
treeNode3 = new javax.swing.tree.DefaultMutableTreeNode("20_05_2012");
treeNode4 = new javax.swing.tree.DefaultMutableTreeNode("Amostra1");
treeNode3.add(treeNode4);
treeNode4 = new javax.swing.tree.DefaultMutableTreeNode("Amostra2");
treeNode3.add(treeNode4);
treeNode2.add(treeNode3);
treeNode1.add(treeNode2);

jTree1.setModel(new javax.swing.tree.DefaultTreeModel(treeNode1));

jTree1.addTreeWillExpandListener(new javax.swing.event.TreeWillExpandListener() {
    public void treeWillCollapse(javax.swing.event.TreeExpansionEvent evt)throws javax.swing.tree.ExpandVetoException {
    }
    public void treeWillExpand(javax.swing.event.TreeExpansionEvent evt)throws javax.swing.tree.ExpandVetoException {
        jTree1TreeWillExpand(evt);
    }
});
jTree1.addTreeSelectionListener(new javax.swing.event.TreeSelectionListener() {
    public void valueChanged(javax.swing.event.TreeSelectionEvent evt) {
        jTree1ValueChanged(evt);
    }
});

jScrollPane1.setViewportView(jTree1);

No meu caso eu não usei o setModel
e sim o construtor e nao coloquei dentro de um novo DefaultModel somente direto o treeNode1.
Não tenho uma IDE aqui e não posso checar os metodos e seus tipos pra lhe dizer exatamente o que acontece, mas fica a dica.

Henrique.tenorio


No meu caso eu não usei o setModel
e sim o construtor e nao coloquei dentro de um novo DefaultModel somente direto o treeNode1.
Não tenho uma IDE aqui e não posso checar os metodos e seus tipos pra lhe dizer exatamente o que acontece, mas fica a dica.

Coloca o código que você fez para mim poder analisar. Estranho isto não estar funcionando.

KamikazeBr

Henrique.tenorio:

No meu caso eu não usei o setModel
e sim o construtor e nao coloquei dentro de um novo DefaultModel somente direto o treeNode1.
Não tenho uma IDE aqui e não posso checar os metodos e seus tipos pra lhe dizer exatamente o que acontece, mas fica a dica.

Coloca o código que você fez para mim poder analisar. Estranho isto não estar funcionando.

Como eu disse, estou sem IDE, e sem o codigo aqui. mas passei o treeNode1 no construtor do JTree().

ViniGodoy

Desculpe, postei o link errado. Veja meu post nesse tópico:
http://www.guj.com.br/java/37821-como-usar-jtree

Você está usando a JTree do jeito difícil.

Criado 20 de maio de 2012
Ultima resposta 20 de mai. de 2012
Respostas 7
Participantes 3