以下是最初的代码,刚建立Application,拖放了一个JTree上去,什么都没做的代码。现在我要在树的节点上点击右键,在弹出菜单中点击“删除”,把当前右键选中的节点删除。
我查了资料试了阵子,越写越乱,只好求助哪位朋友写一个简单点的例子给小弟学习一下。谢谢。
package treetest;import java.awt.BorderLayout;
import java.awt.Dimension;import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTree;
import java.awt.Rectangle;public class TreeTestFrame extends JFrame {
    JPanel contentPane;
    JTree jTree1 = new JTree();
    public TreeTestFrame() {
        try {
            setDefaultCloseOperation(EXIT_ON_CLOSE);
            jbInit();
        } catch (Exception exception) {
            exception.printStackTrace();
        }
    }    /**
     * Component initialization.
     *
     * @throws java.lang.Exception
     */
    private void jbInit() throws Exception {
        contentPane = (JPanel) getContentPane();
        contentPane.setLayout(null);
        setSize(new Dimension(400, 300));
        setTitle("Frame Title");
        jTree1.setBounds(new Rectangle(38, 11, 303, 236));
        contentPane.add(jTree1);
    }
}

解决方案 »

  1.   

    tree.addMouseListener(new MouseAdapter() {
                //弹出右键菜单,TreeRightMouse是一个自定义Popupmenu
                @Override
                public void mouseReleased(MouseEvent e) {
                    int n = tree.getRowForLocation(e.getX(), e.getY());
                    if (n < 0) {
                        return;
                    }
                    if (e.getButton() == MouseEvent.BUTTON3) {
                        TreePath selTree = tree.getPathForRow(n);
                        DefaultMutableTreeNode selNode = (DefaultMutableTreeNode) selTree.getLastPathComponent();
                        if (selNode.isLeaf()) {
                            //如果为叶子,弹出叶子菜单
                            TreeRightMouse temp = new TreeRightMouse("L");
                            temp.show(e.getComponent(), e.getX(), e.getY());
                        } else {
                            //父节点,弹出父节点菜单
                            TreeRightMouse temp = new TreeRightMouse("P");
                            temp.show(e.getComponent(), e.getX(), e.getY());
                        }
                    }
                }
            });
      

  2.   

    public class TreeRightMouse extends JPopupMenu {
        private JMenuItem jmilookACard = new JMenuItem("查看联系人消息");
        private JMenuItem jmimoveACard = new JMenuItem("联系人移到组...");
        private JMenuItem jmipdeleteACard = new JMenuItem("删除联系人");
        private JMenuItem jmirenameATeam = new JMenuItem("重命名组");
        private JMenuItem jmideleteATeam = new JMenuItem("删除组");
        private JMenuItem jmideleteAllTeamer = new JMenuItem("删除组成员");    //空的构造方法
        public TreeRightMouse(String LorP) {
            if (LorP.equals("L")) {
               add(jmilookACard );
                add(jmimoveACard);
                add(jmipdeleteACard);
            }
            if (LorP.equals("P")) {
                add(jmirenameATeam);
                add(jmideleteATeam);
                add(jmideleteAllTeamer);
    }