如何在JTree控件上的指定的节点上右击就弹出菜单,是在节点上右击弹出,不是在树的任一个地方!!!!最好是给一个简单的例子!!!谢谢!!!

解决方案 »

  1.   


    JTree fTree = new JTree(); fTree.addMouseListener(new MouseListener() { @Override
    public void mouseClicked(MouseEvent e) {
    } @Override
    public void mouseEntered(MouseEvent e) {
    } @Override
    public void mouseExited(MouseEvent e) {
    } @Override
    public void mousePressed(MouseEvent e) {
    } @Override
    public void mouseReleased(MouseEvent e) { if (e.isPopupTrigger()) {
    JTree tree = (JTree) e.getComponent();
    TreePath path = tree.getPathForLocation(e.getX(), e.getY()); tree.setSelectionPath(path); if (path == null) {
    System.out.println("Not click on the node...");
    return;
    }
    if (path.getParentPath() != null) {
    JMenuItem menu1 = new JMenuItem("menu1");
    JMenuItem menu2 = new JMenuItem("menu2");
    JMenuItem menu3 = new JMenuItem("menu3");
    JMenuItem menu4 = new JMenuItem("menu4");
    JMenuItem menu5 = new JMenuItem("menu5");
    JPopupMenu popupMenu1;
    popupMenu1 = new JPopupMenu();
    popupMenu1.add(menu3);
    popupMenu1.add(menu4);
    popupMenu1.add(menu5);
    popupMenu1.add(menu1);
    popupMenu1.add(menu2);
    menu1.addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent e) {
    }
    });
    popupMenu1.show(tree, e.getX(), e.getY());
    }
    }
    } });
      

  2.   

    我写成这样,不对!为什么啊!import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.awt.event.MouseEvent;
    import java.awt.event.MouseListener;
    import javax.swing.JFrame;
    import javax.swing.JMenuItem;
    import javax.swing.JPopupMenu;
    import javax.swing.JTree;
    import javax.swing.tree.DefaultMutableTreeNode;
    import javax.swing.tree.DefaultTreeModel;
    import javax.swing.tree.TreePath;
    public class TreeNodePopMenu extends JFrame implements ActionListener{

    private DefaultMutableTreeNode root = new DefaultMutableTreeNode("Root");
    private DefaultTreeModel dtm = new DefaultTreeModel(root);//创建根节点
    private JTree jt=new JTree(dtm);//利用上一步的根,创建树状列表控件,

    public TreeNodePopMenu(){

    this.initialFrame();
    this.addListener();
    }

    public void initialFrame() {

    this.add(jt);
    this.setBounds(50, 50, 250, 400);
    this.setVisible(true);
    this.setDefaultCloseOperation(EXIT_ON_CLOSE);
    }

    public void addListener(){

    jt.addMouseListener(new MouseListener() {            @Override
                public void mouseReleased(MouseEvent e) {                if (e.isPopupTrigger()) {
                        JTree tree = (JTree) e.getComponent();
                        TreePath path = tree.getPathForLocation(e.getX(), e.getY());                    tree.setSelectionPath(path);                    if (path == null) {
                            System.out.println("Not click on the node...");
                            return;
                        }
                        if (path.getParentPath() != null) {
                            JMenuItem menu1 = new JMenuItem("menu1");
                            JMenuItem menu2 = new JMenuItem("menu2");
                            JMenuItem menu3 = new JMenuItem("menu3");
                            JMenuItem menu4 = new JMenuItem("menu4");
                            JMenuItem menu5 = new JMenuItem("menu5");
                            JPopupMenu popupMenu1;
                            popupMenu1 = new JPopupMenu();
                            popupMenu1.add(menu3);
                            popupMenu1.add(menu4);
                            popupMenu1.add(menu5);
                            popupMenu1.add(menu1);
                            popupMenu1.add(menu2);
                            menu1.addActionListener(new ActionListener() {
                                public void actionPerformed(ActionEvent e) {
                                }
                            });
                            popupMenu1.show(tree, e.getX(), e.getY());
                        }
                    }
                } @Override
    public void mouseClicked(MouseEvent arg0) {
    // TODO Auto-generated method stub

    } @Override
    public void mouseEntered(MouseEvent arg0) {
    // TODO Auto-generated method stub

    } @Override
    public void mouseExited(MouseEvent arg0) {
    // TODO Auto-generated method stub

    } @Override
    public void mousePressed(MouseEvent arg0) {
    // TODO Auto-generated method stub

    }
            });
    }

    @Override
    public void actionPerformed(ActionEvent e) {
    // TODO Auto-generated method stub

    }

    public static void main(String[] args){
    new TreeNodePopMenu();
    }}