dúvida JTree

3 respostas
levimendes

Olá pessoal, como faço pra saber se o ítem selecionado no JTree é uma pasta ou uma simplesmente a lâmina.
No caso deste código:

Como faço pra identificar que o cara clicou no “C”?

package testesjtree;

import java.awt.BorderLayout;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;

import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextField;
import javax.swing.JTree;
import javax.swing.ScrollPaneConstants;
import javax.swing.UIManager;
import javax.swing.tree.DefaultMutableTreeNode;
import javax.swing.tree.TreePath;

import tiposmensagens.Mensagem;

public class MainClass {

  public static void main(String[] a) {
	  try {
	    
		  UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
		  JFrame f = new JFrame();
          f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	      f.add(new JTreeEvents());
	      f.setSize(500, 500);
	      f.setVisible(true);
	    
	  } catch(Exception ex) {
		  ex.printStackTrace();
	  }
  }
}

class JTreeEvents extends JPanel {
  JTree tree;

  public JTreeEvents() {
    setLayout(new BorderLayout());
    DefaultMutableTreeNode top = new DefaultMutableTreeNode("Options");

    DefaultMutableTreeNode a = new DefaultMutableTreeNode("A");
    top.add(a);
    
    a.add(new DefaultMutableTreeNode("A1"));
    a.add(new DefaultMutableTreeNode("A2"));
    a.add(new DefaultMutableTreeNode("A3"));

    DefaultMutableTreeNode b = new DefaultMutableTreeNode("B");
    top.add(b);
    
    b.add(new DefaultMutableTreeNode("B1"));
    b.add(new DefaultMutableTreeNode("B2"));
    b.add(new DefaultMutableTreeNode("B3"));
    
    DefaultMutableTreeNode c = new DefaultMutableTreeNode("C");
    top.add(c);

    tree = new JTree(top);

    int v = ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED;
    int h = ScrollPaneConstants.HORIZONTAL_SCROLLBAR_AS_NEEDED;
    JScrollPane jsp = new JScrollPane(tree, v, h);

    add(jsp, BorderLayout.CENTER);
  }
}

3 Respostas

lina

Oi,

Adicione o evento na JTree:

tree.addTreeSelectionListener
(
   new TreeSelectionListener()
   {
      public void valueChanged(TreeSelectionEvent evt)
      {
         final TreePath lo_path = e.getNewLeadSelectionPath();

         Object[] lo_no_path = ((DefaultMutableTreeNode)lo_path.getPathComponent(lo_path.getPathCount()-1)).getPath();

         for (int i=0; i<lo_no_path.length; i++) {
            System.out.println(lo_no_path[i].toString);
         }
      }
   }
);

Tchauzin!

ViniGodoy

O ideal, na hora de trabalhar com JTree é criar um TreeModel:
http://www.guj.com.br/java/37821-como-usar-jtree#501820

levimendes

Obrigado lina e ViniGodoy.

Criado 25 de março de 2011
Ultima resposta 28 de mar. de 2011
Respostas 3
Participantes 3