一个树状菜单的例子。
    歌手 
       专辑1
       专辑2 每当单击专辑则刷新专辑曲目(在一个JPANEL)
问下JTree的结点怎么添加事件

解决方案 »

  1.   

    网上看到的一段代码,应该可以满足你的需求。(添加TreeSelectionListener事件也应该行得通)import java.awt.BorderLayout;
    import java.awt.event.MouseAdapter;
    import java.awt.event.MouseEvent;import javax.swing.JFrame;
    import javax.swing.JPanel;
    import javax.swing.JScrollPane;
    import javax.swing.JTextField;
    import javax.swing.JTree;
    import javax.swing.ScrollPaneConstants;
    import javax.swing.tree.DefaultMutableTreeNode;
    import javax.swing.tree.TreePath;public class MainClass { public static void main(String[] a) {
    JFrame f = new JFrame();
    f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    f.add(new JTreeEvents());
    f.setSize(500, 500);
    f.setVisible(true);
    }
    }class JTreeEvents extends JPanel {
    JTree tree; JTextField jtf; 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")); DefaultMutableTreeNode b = new DefaultMutableTreeNode("B");
    top.add(b); b.add(new DefaultMutableTreeNode("B1"));
    b.add(new DefaultMutableTreeNode("B2"));
    b.add(new DefaultMutableTreeNode("B3")); 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); jtf = new JTextField("", 20);
    add(jtf, BorderLayout.SOUTH); tree.addMouseListener(new MouseAdapter() {
    public void mouseClicked(MouseEvent me) {
    doMouseClicked(me);
    }
    });
    } void doMouseClicked(MouseEvent me) {
    TreePath tp = tree.getPathForLocation(me.getX(), me.getY());
    if (tp != null)
    jtf.setText(tp.toString());
    else
    jtf.setText("");
    }
    }
      

  2.   


       void doMouseClicked(MouseEvent me) {
            TreePath tp = tree.getPathForLocation(me.getX(), me.getY());
            if (tp != null)
                jtf.setText(tp.toString());
            else
                jtf.setText("");
        }能给这段代码给加点注释吗