元素在枚举中转义

时间:2014-03-27 05:00:50

标签: java swing enumeration jtree

我开发了一个搜索JTree节点的应用程序,例如,如果我搜索A1节点,TreePath就是Root,A,A1。应该保留节点A和Root的其他子节点(B,C,D) ,E)应该从Root中删除。

问题在于,当我输入A1节点A,B和D时,如果它们是TreePath的一部分,则根据它们保留或从根节点删除它们(此处A保留,而B和D从但是,从枚举中错过了C和E,如果它们构成了TreePath,则不会被检查。我已经调试了应用程序并且它已经获取了" D"在" B"之后而不是" C"。

我打印了Root的所有孩子,结果是-A B C D E. 但是,虽然错过了C和E集合的迭代,但有人可以提供解决方案。

JTree

enter image description here

{
            String key = field.getText().trim();
            System.out.println("Key entered is " + key);
            boolean deleteNode=true;
            TreePath path = searchNode(key);
            int count=path.getPathCount();
            DefaultMutableTreeNode[] nodes=new DefaultMutableTreeNode[count];
            for(int i=0;i<count;i++)
            {
            nodes[i]=(DefaultMutableTreeNode) path.getPathComponent(i);
            }
            System.out.println(Arrays.toString(nodes));
            if (path != null) 
            {  

        TreeModel model = tree.getModel();
        DefaultMutableTreeNode root = (DefaultMutableTreeNode) model.getRoot();
        Enumeration children=root.children();
        while(children.hasMoreElements())
        {
        DefaultMutableTreeNode node=(DefaultMutableTreeNode)children.nextElement();
        System.out.println(node.toString());
        }
        children=root.children();
        while(children.hasMoreElements())
        { 

        deleteNode=true;
        DefaultMutableTreeNode node=(DefaultMutableTreeNode)children.nextElement();
        System.out.println(node.toString());
        String nodeName=(String) node.getUserObject();
        for(int i=0;i<nodes.length;i++)
        {
        String temp=(String)nodes[i].getUserObject();
        if(temp.equalsIgnoreCase(nodeName))
        {
            System.out.println(node.toString()+" is  part of Tree Path");  
            deleteNode=false;
            break;


        }   
        }
        if(deleteNode)
        {
        System.out.println(node.toString()+" is not the part of Tree Path");   
        root.remove(node);

        }
        }



            DefaultTreeModel newModel = new DefaultTreeModel(root);
            clonedTree.setModel(newModel);
            clonedTree.expandPath(path);//expand a node 
            clonedTree.setSelectionPath(path);//make it node visible
            System.out.println("match found");

        } else 
        {
            System.out.println("match is'nt found");
            removeSubTree();
        }



    }

输出 -

一个 乙 C d ë

一个 A是Tree Path的一部分 乙 B不是Tree Path的一部分 d D不是Tree Path的一部分

0 个答案:

没有答案