Reconhecer objeto em JTree

0 respostas
O

Bom, e negócio é o seguinte:

to precisando de reconhecer um objeto em uma JTree quando o usuário dá dois cliques com o mouse na arvore. Quando ele der dois cliques o evento mouseClick da arvore deve verificar se aquele elemento q ele deu dois cliques é de um determinado objeto, neste caso (código abaixo), objeto Pessoa.

segue código abaixo:

public class Pessoa {
    
    String nome;
    
    Pessoa(String _nome) {
        nome = _nome;
    }
    
    public String toString() {
         return this.nome;
     }
    
}
public class Arvore extends JPanel {
    
    private JScrollPane scrollTree;
    private JTree arvore = new JTree();  
    
    private DefaultMutableTreeNode root = new DefaultMutableTreeNode("root");
    private DefaultTreeModel model;

    private DefaultMutableTreeNode Node1;
    private DefaultMutableTreeNode Node2;
    private DefaultMutableTreeNode Node3;
    
    public Arvore() {
        
        this.setLayout( null );
        this.setSize(new Dimension(718, 178));

        Node1 = new DefaultMutableTreeNode("Nodo 1");        
        Node2 = new DefaultMutableTreeNode("Nodo 2");
        Node3 = new DefaultMutableTreeNode("Nodo 3");
        	  
	  for(int i=0 ; i<3 ; ++i){
		Pessoa pessoa = new Pessoa("Renato");	
		DefaultMutableTreeNode tempNode = new DefaultMutableTreeNode(pessoa);
		Node1.add(tempNode);
	  }        

	  for(int i=0 ; i<3 ; ++i){
		Pessoa pessoa = new Pessoa("Renato");	
		DefaultMutableTreeNode tempNode = new DefaultMutableTreeNode(pessoa);
		Node2.add(tempNode);
	  }

	  for(int i=0 ; i<3 ; ++i){
		Pessoa pessoa = new Pessoa("Renato");	
		DefaultMutableTreeNode tempNode = new DefaultMutableTreeNode(pessoa);
		Node3.add(tempNode);
	  }	

        root.add(Node1);
        root.add(Node2);
        root.add(Node3);
        
        model = new DefaultTreeModel(root);          
        arvore = new JTree(model);
                
        arvore.setRootVisible(false);
        arvore.setShowsRootHandles(true);
        
        arvore.addMouseListener(new MouseAdapter() {
                    public void mouseClicked(MouseEvent e) {
                        arvore_mouseClicked(e);
                    }
        });

        scrollTree = new JScrollPane(arvore);
        scrollTree.setBounds(5,5,710,164); 
                       
        this.add(scrollTree);   
    }
    
    private void arvore_mouseClicked(MouseEvent e) {

        if (e.getClickCount()>1){        
            JOptionPane.showMessageDialog(null, "Deu dois cliques");
            if ((((DefaultMutableTreeNode)e.getSource()).getUserObject() instanceof Pessoa))
                JOptionPane.showMessageDialog(null, " clicou em um objeto do tipo Pessoa");
        }        
    }
    
    public static void main(String[] args){
        
        JFrame frame = new JFrame();
        Arvore  arv = new Arvore();
        
        frame.getContentPane().add(arv);
        frame.setSize(800,300);
        frame.show();
           
    }
}
a arvore é montada corretamente, porém quando eu dou dois cliques em algum objeto da árvore lança uma exceção. acho que o erro está neste trecho de código:
if ((((DefaultMutableTreeNode)e.getSource()).getUserObject() instanceof Pessoa))

vou deixar o codigo pra quem puder ajudar...
vlw
obrigado!

Criado 1 de setembro de 2006
Respostas 0
Participantes 1