⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 extdefaulttreemodel.java

📁 一个简单的操作系统模拟程序 java+swing 可进行一般的文件操作 进程建立及删除等
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
                             } 
                            
                        } else {
                            startNode = currentNode;//the default sitiation
                            
                            resultNode = startNode;//at first the startNode is equal to the resultNode;
                            //search each of the dentry
                            for(int i = 0;i < dentry.length;i++){
                                //search each child
                                startNode = resultNode;//prepare for the next search ,reset the startNode to the new start
                                for(int j = 0;j < startNode.getChildCount();j++){
                                    //if the dentry is equal to the name of the inode
                                    if(dentry[i].equals(((DefaultMutableTreeNode)startNode.getChildAt(j)).getUserObject().toString())){
                                        resultNode = startNode.getChildAt(j);//let the resultNode record the tree of the dentry 
                                        break;//jump to next dentry
                                    }
                                }
                                //if the resultNode = startNode, it means that the search of the dentry at this time has been failed
                                if(startNode == resultNode){
                                    break;//search failed,no longer need to search next dentry
                                }
                            }
                            //if search failed , set the resultNode null
                            if(resultNode == startNode){
                                resultNode = null;
                            } 
                        }
        
        return resultNode;
    }
    
    /**extend the removeNodeFromParent method , let it has the ability to deal with the inode*/
    public void removeNodeFromParent(MutableTreeNode node){
 
        MutableTreeNode parent;        
        parent = (MutableTreeNode)node.getParent();
        //first let the i nodenode break away from the parent 
        ((INode)(((DefaultMutableTreeNode)parent).getUserObject())).delPointer(((INode)(((DefaultMutableTreeNode)node).getUserObject())).getFileDescriptor());
        //destroy the i nodenode from the disk
        ((INode)(((DefaultMutableTreeNode)node).getUserObject())).destroy(((INode)(((DefaultMutableTreeNode)node).getUserObject())).getFileDescriptor());
        //destory the tree node
        super.removeNodeFromParent(node);

    }
    
    /**extend the insertNodeInto method , let it has the ability to deal with the inode*/
    public void insertNodeInto(MutableTreeNode newChild,MutableTreeNode parent,int index){
        super.insertNodeInto(newChild,parent,index);
        //add the child's i node to the parent's data field 
        ((INode)(((DefaultMutableTreeNode)parent).getUserObject())).addPointer(((INode)(((DefaultMutableTreeNode)newChild).getUserObject())).getFileDescriptor());       
    }
    
    /**For class debuging */
    public static void main(String[] args){
        //test the constructor
        Disk simDisk = new Disk();//create a simDisk
      
        INode rootNode = new INode("/",simDisk);//create the root node,route: /
        DefaultMutableTreeNode root = new DefaultMutableTreeNode(rootNode);
        ExtDefaultTreeModel model = new ExtDefaultTreeModel(root);
      
        INode xxNode = new INode("xx",simDisk);//create the xx node,route: /xx
        DefaultMutableTreeNode xx = new DefaultMutableTreeNode(xxNode);
//        root.add(xx);//the old method to add a child node to parent node 
        model.insertNodeInto(xx,root,root.getChildCount());//the new method to insert a node to a tree
        
        INode yyNode = new INode("yy",simDisk);//create the yy node,route: /xx/yy
        DefaultMutableTreeNode yy = new DefaultMutableTreeNode(yyNode);
//        xx.add(yy);//the old method to add a child node to parent node
        model.insertNodeInto(yy,xx,xx.getChildCount());//the new method to insert a node to a tree
        
        INode zzNode = new INode("zz",simDisk);//create the yy node,route:/xx/yy/zz
        DefaultMutableTreeNode zz = new DefaultMutableTreeNode(zzNode);
//        yy.add(zz);
        model.insertNodeInto(zz,yy,yy.getChildCount());//the new method to insert a node to a tree
        
        INode kkNode = new INode("kk",simDisk);//create the yy node,route:/kk
        DefaultMutableTreeNode kk = new DefaultMutableTreeNode(kkNode);
//        root.add(kk);
        model.insertNodeInto(kk,root,root.getChildCount());//the new method to insert a node to a tree
        
        //test the removeNodeFromParent() method
        model.removeNodeFromParent(yy);
        
        //test the getParent method
        String path1 = "/xx/yy/zz";
        String path2 = "xx/yy/zz";
        String path3 = "./kk";
        String path4 = "../xx/yy/zz";
        String path5 = "/";
        String path6 = "/xx";
        String path7 = ".";
        String path8 = "./xx";
        String path9 = "..";
        String path10 = "../xx";
        String path11 = "xx";
        String path12 = "xx/yy/zz";
        
        String[] dentry1 = path1.split("/");
        DefaultMutableTreeNode result1 = (DefaultMutableTreeNode)model.getParent(dentry1);
        if(result1 != null){
            System.out.println(result1.getUserObject().toString());
        } else {
            System.out.println("null");
        }
        
        //test the setCurrentNode() method
        model.setCurrentNode(root);
        
        String[] dentry2 = path2.split("/");
        DefaultMutableTreeNode result2 = (DefaultMutableTreeNode)model.getParent(dentry2);
        if(result2 != null){
            System.out.println(result2.getUserObject().toString());
        } else {
            System.out.println("null");
        }
        
        String[] dentry3 = path3.split("/");
        DefaultMutableTreeNode result3 = (DefaultMutableTreeNode)model.getParent(dentry3);
        if(result3 != null){
            System.out.println(result3.getUserObject().toString());
        } else {
            System.out.println("null");
        }
    
        String[] dentry4 = path4.split("/");
        DefaultMutableTreeNode result4 = (DefaultMutableTreeNode)model.getParent(dentry4);
        if(result4 != null){
            System.out.println(result4.getUserObject().toString());
        } else {
            System.out.println("null");
        }
        
//        String[] dentry5 = path5.split("/");
//        DefaultMutableTreeNode result5 = (DefaultMutableTreeNode)model.getParent(dentry5);
//        if(result5 != null){
//            System.out.println(result5.getUserObject().toString());
//        } else {
//            System.out.println("null");
//        }
        
        String[] dentry6 = path6.split("/");
        DefaultMutableTreeNode result6 = (DefaultMutableTreeNode)model.getParent(dentry6);
        if(result6 != null){
            System.out.println(result6.getUserObject().toString());
        } else {
            System.out.println("null");
        }
        
        String[] dentry7 = path7.split("/");
        DefaultMutableTreeNode result7 = (DefaultMutableTreeNode)model.getParent(dentry7);
        if(result7 != null){
            System.out.println(result7.getUserObject().toString());
        } else {
            System.out.println("null");
        }
        
        
        String[] dentry8 = path8.split("/");
        DefaultMutableTreeNode result8 = (DefaultMutableTreeNode)model.getParent(dentry8);
        if(result8 != null){
            System.out.println(result8.getUserObject().toString());
        } else {
            System.out.println("null");
        }
        
        String[] dentry9 = path9.split("/");
        DefaultMutableTreeNode result9 = (DefaultMutableTreeNode)model.getParent(dentry9);
        if(result9 != null){
            System.out.println(result9.getUserObject().toString());
        } else {
            System.out.println("null");
        }
        
        String[] dentry10 = path10.split("/");
        DefaultMutableTreeNode result10 = (DefaultMutableTreeNode)model.getParent(dentry10);
        if(result10 != null){
            System.out.println(result10.getUserObject().toString());
        } else {
            System.out.println("null");
        }        
    
        String[] dentry11 = path11.split("/");
        DefaultMutableTreeNode result11 = (DefaultMutableTreeNode)model.getParent(dentry11);
        if(result11 != null){
            System.out.println(result11.getUserObject().toString());
        } else {
            System.out.println("null");
        }    
    
        String[] dentry12 = path12.split("/");
        DefaultMutableTreeNode result12 = (DefaultMutableTreeNode)model.getParent(dentry12);
        if(result12 != null){
            System.out.println(result12.getUserObject().toString());
        } else {
            System.out.println("null");
        }    
        
        System.out.println("-------------------------------------------------------");
        
        result1 = (DefaultMutableTreeNode)model.getChild(dentry1);
        if(result1 != null){
            System.out.println(result1.getUserObject().toString());
        } else {
            System.out.println("null");
        } 
        
        result2 = (DefaultMutableTreeNode)model.getChild(dentry2);
        if(result2 != null){
            System.out.println(result2.getUserObject().toString());
        } else {
            System.out.println("null");
        }
    
        result3 = (DefaultMutableTreeNode)model.getChild(dentry3);
        if(result3 != null){
            System.out.println(result3.getUserObject().toString());
        } else {
            System.out.println("null");
        }
        
        result4 = (DefaultMutableTreeNode)model.getChild(dentry4);
        if(result4 != null){
            System.out.println(result4.getUserObject().toString());
        } else {
            System.out.println("null");
        }
        
//        result5 = (DefaultMutableTreeNode)model.getChild(dentry5);
//        if(result5 != null){
//            System.out.println(result5.getUserObject().toString());
//        } else {
//            System.out.println("null");
//        }
    
        result6 = (DefaultMutableTreeNode)model.getChild(dentry6);
        if(result6 != null){
            System.out.println(result6.getUserObject().toString());
        } else {
            System.out.println("null");
        }
    
        result7 = (DefaultMutableTreeNode)model.getChild(dentry7);
        if(result7 != null){
            System.out.println(result7.getUserObject().toString());
        } else {
            System.out.println("null");
        }
    
        result8 = (DefaultMutableTreeNode)model.getChild(dentry8);
        if(result8 != null){
            System.out.println(result8.getUserObject().toString());
        } else {
            System.out.println("null");
        }
    
        result9 = (DefaultMutableTreeNode)model.getChild(dentry9);
        if(result9 != null){
            System.out.println(result9.getUserObject().toString());
        } else {
            System.out.println("null");
        }
    
        result10 = (DefaultMutableTreeNode)model.getChild(dentry10);
        if(result10 != null){
            System.out.println(result10.getUserObject().toString());
        } else {
            System.out.println("null");
        }
    
        result11 = (DefaultMutableTreeNode)model.getChild(dentry11);
        if(result11 != null){
            System.out.println(result11.getUserObject().toString());
        } else {
            System.out.println("null");
        }
    
        result12 = (DefaultMutableTreeNode)model.getChild(dentry12);
        if(result12 != null){
            System.out.println(result12.getUserObject().toString());
        } else {
            System.out.println("null");
        }
    

        
    
    }
    
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -