import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.tree.*;public class TestTree extends JFrame
{
public void display()
{
DefaultMutableTreeNode root = this.createTree();
JTree tree = new JTree (root);
tree.addMouseListener(new MyMouseAdapter());
tree.setRootVisible(true);
tree.setEditable(true);
JScrollPane jsp = new JScrollPane(tree);
this.getContentPane().add(jsp);
this.setSize(500,500);
this.setVisible(true);
}

public static void main(String args[])
    {
     TestTree tt = new TestTree();
     tt.display();
    }

public DefaultMutableTreeNode createTree()
{
DefaultMutableTreeNode root = new DefaultMutableTreeNode("root");
DefaultMutableTreeNode source = new DefaultMutableTreeNode("source");
DefaultMutableTreeNode tool  = new DefaultMutableTreeNode("tool");

root.add(source);
root.add(tool);

DefaultMutableTreeNode java = new DefaultMutableTreeNode("java");
DefaultMutableTreeNode C = new DefaultMutableTreeNode("C++");
DefaultMutableTreeNode vb = new DefaultMutableTreeNode("VB");
source.add(java);
source.add(C);
source.add(vb);

DefaultMutableTreeNode JBuilder = new DefaultMutableTreeNode("JBuilder"); 
DefaultMutableTreeNode JCreator = new DefaultMutableTreeNode("JCreator");

tool.add(JBuilder);
tool.add(JCreator);

return root;
}
}class MyMouseAdapter extends MouseAdapter
{
public void mousePressed(MouseEvent e) 
    {
     JTree tree =(JTree)e.getSource();
     int clickrow = tree.getRowForLocation(e.getX(),e.getY());
     if(clickrow != -1)
     {
     TreePath treepath = tree.getPathForRow(clickrow);
     TreeNode treenode = (TreeNode)treepath.getLastPathComponent();
     System.out.println (treenode.toString());
     }
    }
}