Jtree生成虚拟结点的 增删改查操作

来源:互联网 发布:阿里云虚拟主机 编辑:程序博客网 时间:2024/05/19 16:07

java swing Jtree 适用于具有树状分支 的资源管理,Jtree本身的DefaultTreeNode生成的虚拟结点,只具有展示意义,不具有实际意义,

 DefaultMutableTreeNode root=new DefaultMutableTreeNode("root");

将root结点装载到树上,

其他的结点可以用DefaultTreeNode定义node,然后root.add(node);即可


同时可以为其设置右键菜单显示“增删改查操作”

   public void setPopupMenu(JTree tree) {  
        final JPopupMenu pop = new JPopupMenu();  
        
        pop.add(new AbstractAction("添加子目录") {  
            private static final long serialVersionUID = 1L;  
            
            public void actionPerformed(ActionEvent e) {  
            DefaultMutableTreeNode parentNode=null;
                 DefaultMutableTreeNode newNode=new DefaultMutableTreeNode("新建目录");
                 newNode.setAllowsChildren(true);
                 TreePath parentPath=tree.getSelectionPath();
                     
                    //取得新节点的父节点
                 parentNode=(DefaultMutableTreeNode)(parentPath.getLastPathComponent());
                 ((DefaultTreeModel) tree.getModel()).insertNodeInto(newNode,parentNode,parentNode.getChildCount());
           
            }  
        });  
        
        pop.add(new AbstractAction("删除目录") {  
            private static final long serialVersionUID = 1L;  
  
            public void actionPerformed(ActionEvent e) {  
            TreePath treepath=tree.getSelectionPath();
                 if (treepath!=null){
                      //下面两行取得选取节点的父节点.
                   DefaultMutableTreeNode selectionNode=(DefaultMutableTreeNode)treepath.getLastPathComponent();
                   TreeNode parent=(TreeNode)selectionNode.getParent();
                   if (parent!=null) {
                         //由DefaultTreeModel的removeNodeFromParent()方法删除节点,包含它的子节点。
                  ((DefaultTreeModel) tree.getModel()).removeNodeFromParent(selectionNode);
                   }
                 }
            }
        });  
        
        pop.add(new AbstractAction("重命名") {  
            private static final long serialVersionUID = 1L;  
  
            public void actionPerformed(ActionEvent e) {  
           
            TreePath path = tree.getSelectionPath();  
                tree.startEditingAtPath(path); 
            }
        });
            
        tree.addMouseListener(new MouseAdapter() {  
            @Override  
            public void mouseReleased(MouseEvent e) {  
                if (e.isMetaDown()) {  
                    pop.show(tree, e.getX(), e.getY());  
                }  
            }  
  
            public void mouseClicked(MouseEvent evt) {  
                if (evt.getClickCount() == 1) {  
                      
                }  
            }  
        });  
    } 

原创粉丝点击