JTree nao atualiza?

2 respostas
T

Bom galera, estou desenvolvendo uma aplicação aqui em que coloco em um JTree o historico dos usuários do sistema.

Crio e faço a inserção dos nodos na arvore, mas quando mostra na tela, soh aparece o JTree, definido por default no NetBeans.

Gostaria de saber como atualizar os nodos da arvore, considerando os valores que construo

Abaixo segue o codigo:

package GUI;

import DAO.DAOBase;
import Util.Par;
import java.awt.Dimension;
import java.awt.Toolkit;
import java.util.Vector;
import javax.swing.JPanel;
import javax.swing.JTree;
import javax.swing.tree.DefaultMutableTreeNode;
import javax.swing.tree.DefaultTreeModel;
/*
 * Historico.java
 *
 * Created on 13 de Agosto de 2009, 16:51
 */

/**
 *
 * @author  Museu
 */
public class Historico extends javax.swing.JDialog {
    
    
    private Vector hist;
    private JTree Arvore;
 
    /** Creates new form Historico */
    public Historico(java.awt.Frame parent, boolean modal) {
        super(parent, modal);
        initComponents();
        
        // centraliza aplicacao
        Toolkit tk = Toolkit.getDefaultToolkit();  
        Dimension screenSize = tk.getScreenSize();  
        this.setLocation((screenSize.width -  this.getSize().width) / 2,  
                        (screenSize.height - this.getSize().height) / 2); 
        System.gc();
        jLblUsuario.setText(Principal.getUsuario().getNome());
        
        // recupera o historico para montar a arvore
        hist = DAOBase.recupera_historico(Principal.getUsuario().getId());
        preencheArvore(hist);
    }
    
    
    public void preencheArvore(Vector hist){
    
        DefaultMutableTreeNode raiz = montarArvore(hist);
        jTree1 = new JTree(raiz);
        
    }
         
         private DefaultMutableTreeNode montarArvore(Vector hist){ 
            
            Par p;
            String[] invs; 
            DefaultMutableTreeNode raiz = new  DefaultMutableTreeNode("Histórico");
            DefaultMutableTreeNode subno;
            
            for(int i = 0; i < hist.size(); i ++){
                p = (Par)hist.get(i);
                subno = new DefaultMutableTreeNode(formataData(p.getDate().toString()));
                System.out.println(formataData(p.getDate().toString()));
                invs = p.getInvs().split(",");
            for( int j = 0; j < invs.length; j ++ ){
                System.out.println(" >> " + invs[j]);
                subno.add(new DefaultMutableTreeNode(invs[j]));
               }
              raiz.add(subno); 
          
            }
            
             return raiz; 
        }    
         
      // Esse metodo e gerado automaticamente pelo NetBeans.
      
    /** This method is called from within the constructor to
     * initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is
     * always regenerated by the Form Editor.
     */
    // <editor-fold defaultstate="collapsed" desc=" Código Gerado ">                          
    private void initComponents() {
        jLblTitulo = new javax.swing.JLabel();
        jPanel1 = new javax.swing.JPanel();
        jScrollPane1 = new javax.swing.JScrollPane();
        jTree1 = new javax.swing.JTree();
        jPanel2 = new javax.swing.JPanel();
        jLblNome = new javax.swing.JLabel();
        jLblUsuario = new javax.swing.JLabel();
        jLblNivelPerm = new javax.swing.JLabel();
        jLblTotal = new javax.swing.JLabel();
        jLblDescTotal = new javax.swing.JLabel();

        setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
        setTitle("Hist\u00f3rico do Usu\u00e1rio");
        jLblTitulo.setText("<html> Nesta tela s\u00e3o apresentados seus dados de usu\u00e1rio e seu hist\u00f3rico de <br> \nfichas de cataloga\u00e7\u00e3o alteradas nos \u00faltimos 30 dias.</html>");

        jPanel1.setBorder(javax.swing.BorderFactory.createTitledBorder(javax.swing.BorderFactory.createLineBorder(new java.awt.Color(0, 0, 0)), "Hist\u00f3rico de fichas alteradas", javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION, javax.swing.border.TitledBorder.DEFAULT_POSITION, new java.awt.Font("Tahoma", 1, 11), new java.awt.Color(0, 0, 0)));
        jTree1.setRootVisible(false);
        jScrollPane1.setViewportView(jTree1);

        javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1);
        jPanel1.setLayout(jPanel1Layout);
        jPanel1Layout.setHorizontalGroup(
            jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel1Layout.createSequentialGroup()
                .addContainerGap()
                .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 193, Short.MAX_VALUE)
                .addContainerGap())
        );
        jPanel1Layout.setVerticalGroup(
            jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel1Layout.createSequentialGroup()
                .addContainerGap()
                .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 187, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
        );

        jPanel2.setBorder(javax.swing.BorderFactory.createTitledBorder(javax.swing.BorderFactory.createLineBorder(new java.awt.Color(0, 0, 0)), "Dados do usu\u00e1rio", javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION, javax.swing.border.TitledBorder.DEFAULT_POSITION, new java.awt.Font("Tahoma", 1, 11), new java.awt.Color(0, 0, 0)));
        jLblNome.setText("Nome:");

        jLblUsuario.setText("jLabel4");

        jLblNivelPerm.setText("N\u00edvel de permiss\u00e3o:");

        jLblTotal.setText("Permiss\u00e3o Total:");

        jLblDescTotal.setText("<html> Voc\u00ea tem permiss\u00e3o para realizar consultas <br> e emiss\u00e3o de relat\u00f3rios e fazer altera\u00e7\u00f5es <br>  nos dados das fichas de cataloga\u00e7\u00e3o. </html> ");

        javax.swing.GroupLayout jPanel2Layout = new javax.swing.GroupLayout(jPanel2);
        jPanel2.setLayout(jPanel2Layout);
        jPanel2Layout.setHorizontalGroup(
            jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel2Layout.createSequentialGroup()
                .addContainerGap()
                .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(jLblTotal)
                    .addComponent(jLblDescTotal)
                    .addComponent(jLblNome)
                    .addComponent(jLblUsuario)
                    .addComponent(jLblNivelPerm))
                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
        );
        jPanel2Layout.setVerticalGroup(
            jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel2Layout.createSequentialGroup()
                .addComponent(jLblNome)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(jLblUsuario)
                .addGap(23, 23, 23)
                .addComponent(jLblNivelPerm)
                .addGap(22, 22, 22)
                .addComponent(jLblTotal)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(jLblDescTotal)
                .addContainerGap(54, Short.MAX_VALUE))
        );

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addContainerGap()
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(layout.createSequentialGroup()
                        .addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(jPanel2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                    .addComponent(jLblTitulo))
                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addGap(20, 20, 20)
                .addComponent(jLblTitulo)
                .addGap(29, 29, 29)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
                    .addComponent(jPanel2, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                    .addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
        );
        pack();
    }// </editor-fold>                        
    
    /**
     * @param args the command line arguments
     */
    public static void main(String args[]) {
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                new Historico(new javax.swing.JFrame(), true).setVisible(true);
            }
        });
    }
    
    // Declaração de variáveis - não modifique                     
    private javax.swing.JLabel jLblDescTotal;
    private javax.swing.JLabel jLblNivelPerm;
    private javax.swing.JLabel jLblNome;
    private javax.swing.JLabel jLblTitulo;
    private javax.swing.JLabel jLblTotal;
    private javax.swing.JLabel jLblUsuario;
    private javax.swing.JPanel jPanel1;
    private javax.swing.JPanel jPanel2;
    private javax.swing.JScrollPane jScrollPane1;
    private javax.swing.JTree jTree1;
    // Fim da declaração de variáveis                   
    
}

Vlws, pessoal

2 Respostas

Fernando_Generoso_da

Cada componente como JTable, JTree tem seu model específico. Para manipulação desses componentes é importante entender como funciona e implementar um específico para o seu uso. Depois de entender essa parte, seu uso se torna muito simples. Da uma olhada nesse link e bons estudos!

http://java.sun.com/docs/books/tutorial/uiswing/components/tree.html

Fernando

T

Entao, Fernando

Estive dando uma olhada no tutorial sobre o JTree.

Modifiquei o codigo neste trecho acrescentando como TreeModel o default. Entretanto executando este código, nem mesmo a árvore padrão do NetBeans apareceu ?

public void preencheArvore(Vector hist){
       
    
        DefaultMutableTreeNode raiz = montarArvore(hist);
        treeModel = new DefaultTreeModel(raiz);
        jTree1 = new JTree(treeModel);
        //jTree1 = new JTree(raiz);
        jTree1.setVisible(true);

}

O que deve estar acontecendo ?

Obrigado

Criado 19 de agosto de 2009
Ultima resposta 20 de ago. de 2009
Respostas 2
Participantes 2