略知一二,首先你得有一个实现接口mouseListener监听器类比如名为abc,在监听器类中实现响应鼠标的接口函数,在这个函数中定义一个Jtree。做完这些后,在主构造函数中添加addmouseLister(abc);这样就可以了。
另外感觉老兄的程序也有问题,jpm.add(m1)是不是改放在init()内部。

解决方案 »

  1.   

    太复杂了,很难说清楚。
    你需要一个自己的类,再把这个类作为节点加到树上。如果仅仅是root的节点的话,那就简单多了:        tree.addMouseListener(new MouseAdapter() {
                public void mousePressed (MouseEvent e) {
                        TreePath path = tree.getPathForLocation(e.getX(),  e.getY());            }
                public void mouseReleased (MouseEvent e) {
                    if (e.isPopupTrigger()) {
                        TreePath path = tree.getPathForLocation(e.getX(),  e.getY());
                        if (path != null){
                            Object c = path.getLastPathComponent();
                            if(tree.getModel().isRoot(c)){
                                popup.show(e.getComponent(), e.getX(), e.getY());
                            }
                        }
                     }
                }
            });
      

  2.   

    为什么报错:
    import javax.swing.*;
    import java.awt.*;
    import javax.swing.tree.*;
    import java.awt.event.*;
    import javax.swing.event.*;
    public class jtree extends JApplet {Container f = this.getContentPane();
    public void init(){final JPopupMenu jpm=new JPopupMenu("aa");
    JMenuItem save=new JMenuItem("Save");
    jpm.add(save);final DefaultMutableTreeNode rootNode=new DefaultMutableTreeNode("tree root");
    final DefaultMutableTreeNode fnode=new DefaultMutableTreeNode("tree fnode");
    rootNode.add(fnode);
    final JTree t=new JTree(rootNode);t.addMouseListener(new MouseAdapter() {public void mousePressed(MouseEvent me) {
    //showPopup(me);
                                            }
    public void mouseReleased(MouseEvent me) {
    showPopup(me);
                                             }
     void showPopup(MouseEvent me) {
    if(me.isPopupTrigger()&& t.getModel().getRoot()==rootNode) {
    jpm.show(me.getComponent(),me.getX(),me.getY());} else {return;}
                                          }   }  );
    t.setShowsRootHandles(true);
    t.addMouseListener(new MouseAdapter() {
                public void mousePressed (MouseEvent e) {
                        TreePath path = t.getPathForLocation(e.getX(),  e.getY());            }
                public void mouseReleased (MouseEvent e) {
                    if (e.isPopupTrigger()) {
                        TreePath path = t.getPathForLocation(e.getX(),  e.getY());
                        if (path != null){
                            Object c = path.getLastPathComponent();
                            if(t.getModel().isRoot(c)){  //此处报错
                                jpm.show(e.getComponent(), e.getX(), e.getY());
                            }
                        }
                     }
                }
            });
    f.add(t);
    }
    .getModel()
    }
      

  3.   

    sorry,没有这个函数只有isLeaf()
    你可以写成:
                            if(!t.getModel().isLeaf(c)){
      

  4.   

    if(t.getModel().isLeaf(c))还是不行呀?
    报错:
    jtree.java:56:illegal start of type
    .getModel()
    jtree.java:56:<identifier>expected
    .getModel()
      

  5.   

    //右键点击事件    jPopupMenu = new JPopupMenu();
        JMenuItem item1 = new JMenuItem("添加子节点");
        JMenuItem item2 = new JMenuItem("编辑节点");
        JMenuItem item3 = new JMenuItem("删除节点");    jPopupMenu.add(item1);
        jPopupMenu.add(item2);
        jPopupMenu.add(item3);    item1.addActionListener(new ActionListener() {
          public void actionPerformed(ActionEvent ae) {
            addNode();
          }
        });
        item2.addActionListener(new ActionListener() {
          public void actionPerformed(ActionEvent ae) {
            editNode(ae);
          }
        });    item3.addActionListener(new ActionListener() {
          public void actionPerformed(ActionEvent ce) {
            delNode();
          }
        });    tree.add(jPopupMenu);
        tree.addMouseListener(new MouseAdapter() {
          public void mouseReleased(MouseEvent er) {
            try {
              //是否右键单击
              if (er.getClickCount() == 1 && SwingUtilities.isRightMouseButton(er)) {
                TreePath path = tree.getPathForLocation(er.getX(), er.getY());
                if (path == null)
                  return;
                tree.setSelectionPath(path);
                jPopupMenu.show(tree, er.getX(), er.getY());
              }          else if (er.getClickCount() == 1) {
                TreePath path = tree.getPathForLocation(er.getX(), er.getY());
                if (path == null)
                  return;
                if (tree.isExpanded(path)) {
                  tree.collapsePath(path);
                }
                else {
                  tree.expandPath(path);
                }
                return;
              }
            }
            catch (Exception ex) {
              ex.printStackTrace();
            }
          }
        });
      

  6.   

    t.addMouseListener(new MouseAdapter() {public void mousePressed(MouseEvent me) {
    //showPopup(me);
                                            }
    public void mouseReleased(MouseEvent me) {
    showPopup(me);
                                             }
     void showPopup(MouseEvent me) {
    if(me.isPopupTrigger()&& t.getModel().getRoot()==rootNode) {
    jpm.show(me.getComponent(),me.getX(),me.getY());} else {return;}
                                          }   }  );
    t.setShowsRootHandles(true);
    t.addMouseListener(new MouseAdapter() {
                public void mousePressed (MouseEvent e) {
                        TreePath path = t.getPathForLocation(e.getX(),  e.getY());            }
                public void mouseReleased (MouseEvent e) {
                    if (e.isPopupTrigger()) {
                        TreePath path = t.getPathForLocation(e.getX(),  e.getY());
                        if (path != null){
                            Object c = path.getLastPathComponent();
                            if(t.getModel().isRoot(c)){  //此处报错
                                jpm.show(e.getComponent(), e.getX(), e.getY());
                            }
                        }
                     }
                }
            });
    改为:
    t.setShowsRootHandles(true);
    t.addMouseListener(new MouseAdapter() {
                public void mousePressed (MouseEvent e) {
                        TreePath path = t.getPathForLocation(e.getX(),  e.getY());            }
                public void mouseReleased (MouseEvent e) {
                    if (e.isPopupTrigger()) {
                        TreePath path = t.getPathForLocation(e.getX(),  e.getY());
                        if (path != null){
                                jpm.show(e.getComponent(), e.getX(), e.getY());
                            }
                        }
                     }
                }
            });
      

  7.   

    大哥:你再试试打开html后,右键点到空白色处一样的会跳出菜单来
      

  8.   

    package untitled1;import java.awt.*;
    import java.awt.event.*;
    import java.applet.*;
    import javax.swing.JApplet;
    import javax.swing.JPopupMenu;
    import javax.swing.JMenuItem;
    import javax.swing.tree.DefaultMutableTreeNode;
    import javax.swing.JTree;
    import javax.swing.tree.TreePath;/**
     * <p>Title: </p>
     * <p>Description: </p>
     * <p>Copyright: Copyright (c) 2004</p>
     * <p>Company: </p>
     * @author not attributable
     * @version 1.0
     */public class jtree
        extends JApplet {
      private boolean isStandalone = false;
      //Get a parameter value
      public String getParameter(String key, String def) {
        return isStandalone ? System.getProperty(key, def) :
            (getParameter(key) != null ? getParameter(key) : def);
      }  //Construct the applet
      public jtree() {
      }  //Initialize the applet
      public void init() {
        try {
          jbInit();
        }
        catch (Exception e) {
          e.printStackTrace();
        }
      }  //Component initialization
      private void jbInit() throws Exception {
        Container f = this.getContentPane();
        final JPopupMenu jpm = new JPopupMenu("aa");
        JMenuItem save = new JMenuItem("Save");
        jpm.add(save);    final DefaultMutableTreeNode rootNode = new DefaultMutableTreeNode(
            "tree root");
        final DefaultMutableTreeNode fnode = new DefaultMutableTreeNode(
            "tree fnode");
        rootNode.add(fnode);
        final JTree t = new JTree(rootNode);    t.setShowsRootHandles(true);
        t.addMouseListener(new MouseAdapter() {
          public void mousePressed(MouseEvent e) {
            TreePath path = t.getPathForLocation(e.getX(), e.getY());      }      public void mouseReleased(MouseEvent e) {
            if (e.isPopupTrigger()) {
              TreePath path = t.getPathForLocation(e.getX(), e.getY());
              if (path != null) {
                jpm.show(e.getComponent(), e.getX(), e.getY());
              }
            }
          }
        });  f.add(t);}//Start the applet
    public void start() {
    }//Stop the applet
    public void stop() {
    }//Destroy the applet
    public void destroy() {
    }//Get Applet information
    public String getAppletInfo() {
      return "Applet Information";
    }//Get parameter info
    public String[][] getParameterInfo() {
      return null;
    }
    }