要在JTree的的叶子节点上使用右键快捷菜单,就想QQ上的在我的好友的头像上点右键会有发送消息等菜单,那为高手帮忙

解决方案 »

  1.   

    用JPopupMenu 
    import java.awt.*; 
    import java.awt.event.*; 
    import javax.swing.*; 
    class PopupmenuTest extends MouseAdapter implements MouseListener 

    JFrame f; 
    JPopupMenu pm; 
    public static void main(String argv[]) 

    new PopupmenuTest(); 

    public PopupmenuTest() 

    f=new JFrame("PopupmenuTest"); 
    f.addMouseListener(this); 
    JMenuItem popup1=new JMenuItem(); 
    JMenuItem popup2=new JMenuItem(); 
    pm=new JPopupMenu(); 
    pm.add(popup1); 
    pm.add(popup2); 
    f.setSize(100,100); 
    f.setVisible(true); 

    public void mouseReleased(MouseEvent e) 

    if(e.isPopupTrigger()) 

    pm.show(f,e.getX(),e.getY()); 


    }
      

  2.   

    我要求的是JTree的实例  被监听  addMouseListener( ) ;同时是 树的叶节点  响应出来的事件是 出现 JPopupMenu 这个菜单啊。   兄弟啊。  你是不是没理解我的意思啊!天啊。 .  我的天啊。 
    1
      

  3.   

    import java.awt.BorderLayout;
    import java.awt.event.MouseAdapter;
    import java.awt.event.MouseEvent;import javax.swing.*;
    import javax.swing.tree.TreePath;public class T {
    public static void main(String[] args) {
    final JTree tree = new JTree();
    final JPopupMenu popup = new JPopupMenu();
    popup.add(new JMenuItem("Cut"));
    popup.add(new JMenuItem("Copy"));
    popup.add(new JMenuItem("Paste"));
    tree.addMouseListener(new MouseAdapter() {

    public void mouseReleased(MouseEvent e) {
    if (SwingUtilities.isRightMouseButton(e)) {
    popup.show(tree, e.getX(), e.getY());
    }
    }

    public void mousePressed(MouseEvent e) {
    if (SwingUtilities.isRightMouseButton(e)) {
    TreePath path = tree.getPathForLocation(e.getX(), e.getY());
    if (path != null && !tree.isPathSelected(path)) {
    tree.setSelectionPath(path);
    }
    }
    }

    });

    JFrame f = new JFrame();
    f.getContentPane().add(new JScrollPane(tree), BorderLayout.CENTER);
    f.pack();
    f.setLocationRelativeTo(null);
    f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    f.setVisible(true);
    }
    }