树型结构刷新后怎么还是变成原来的结构
当加节点或删节点后
虽然显示时更新后的结构,但节点一展开又变成原来的结构了
我是整体更新的,从新装入数据并生成树
请高手指教

解决方案 »

  1.   

    private void creatUserInterface()
    {
    //--------------------------------set buttons----------------------------------
    containButtonsJpanel =new JPanel();
    containButtonsJpanel.setLayout(new GridLayout(12,1,0,10));

    shareResource=new JButton("share resource");
    containButtonsJpanel.add(shareResource);
    shareResource.addActionListener(
    new ActionListener()
    {
    public void actionPerforme(ActionEvent event)
    {
    shareResourceActionPerformed(event);
    }
    }
    );
    update=new JButton("update");
    containButtonsJpanel.add(update);
    update.addActionListener(
    new ActionListener()
    {
    public void actionPerformed(ActionEvent event)
    {
    updateActionPerformed(event);
    }
    }
    );

    download=new JButton("download");
    containButtonsJpanel.add(download);
    download.addActionListener(
    new ActionListener()
    {
    public void actionPerformed(ActionEvent event)
    {
    downloadActionPerformed(event);
    }
    }
    );

    play=new JButton("play");
    containButtonsJpanel.add(play);
    play.addActionListener(
    new ActionListener()
    {
    public void actionPerformed(ActionEvent event)
    {
    playActionPerformed(event);
    }
    }
    );

    decoder=new JButton("decoder");
    containButtonsJpanel.add(decoder);
    decoder.addActionListener(
    new ActionListener()
    {
    public void actionPerformed(ActionEvent event)
    {
    decoderActionPerformed(event);
    }
    }
    );

    exit=new JButton("exit");
    containButtonsJpanel.add(exit);
    exit.addActionListener(
    new ActionListener()
    {
    public void actionPerformed(ActionEvent event)
    {
    exitActionPerformed(event);
    }
    }
    );

    //---------------------------setButtons----------------------------------------

    //---------------------------setTree--------------------------------------------
    containJScrollPaneJPanel=new JPanel();
    //containTreeJScrollPane=new JScrollPane();
    //Dimension dis3=new Dimension();
      //dis3.setSize(280,600);
       //containJScrollPaneJPanel.setPreferredSize(dis3);
    int v=ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED;
    int h=ScrollPaneConstants.HORIZONTAL_SCROLLBAR_AS_NEEDED;
    resourceTreeNode=new DefaultMutableTreeNode("Resource");
    treeNodesIni();
    tree=new JTree(resourceTreeNode);
    //Dimension dis1=new Dimension();
     // dis1.setSize(300,500);
    //tree.setPreferredSize(dis1);

    containTreeJScrollPane=new JScrollPane(tree,v,h);
    Dimension dis3=new Dimension();
    dis3.setSize(300,400);
    //containTreeJScrollPane=new JScrollPane(tree);
    containTreeJScrollPane.setPreferredSize(dis3);
    containJScrollPaneJPanel.add(containTreeJScrollPane);


    //----------------------------setTree-------------------------------------------------

    //----------------------------setMainInterface--------------------------------------------
    setSpaceJPanel =new JPanel();
    Dimension dis2=new Dimension();
     dis2.setSize(200,200);
     setSpaceJPanel.setPreferredSize(dis2);
    Container contentPane=getContentPane();

    contentPane.setLayout(new BorderLayout());
    contentPane.add(containButtonsJpanel,BorderLayout.EAST);
    contentPane.add(containJScrollPaneJPanel,BorderLayout.WEST);
    //contentPane.add(setSpaceJPanel,BorderLayout.SOUTH);
    setTitle("Share resource system");
    setSize(500,600);
    setVisible(true);
    setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
    //----------------------------setMainInterface-------------------------------------
    }
    private void treeNodesIni()
    {
    String filePath="d:\\test\\groupInf";
    File file=new File(filePath);
    int len=0;
    //DefaultMutableTreeNode top=new DefaultMutableTreeNode("resource");
    if(file.exists()&&file.isDirectory())
    {
    len=file.list().length;
    fileName=new DefaultMutableTreeNode[len];
    for(int i=0;i<len;i++)
    {
    int index=file.list()[i].lastIndexOf(".");
        fileName[i]=new DefaultMutableTreeNode((file.list())[i].substring(0,index));
    //top.add(fileName[i]);
        resourceTreeNode.add(fileName[i]);
    String path=(file.listFiles())[i].getAbsolutePath();
    Vector temp=new Vector();
    parseGroupInf pgi=new parseGroupInf(path);
    pgi.runParseGroupInf();
    temp=pgi.getFileName();
    fileNameLeft=new DefaultMutableTreeNode[temp.size()];
    for(int j=0;j<temp.size();j++)
    {
    fileNameLeft[j]=new DefaultMutableTreeNode(temp.get(j));
    fileName[i].add(fileNameLeft[j]);
    }
    }
    }
    主要用到的两个函数
      

  2.   

    我不知道你是怎么生成树的 我一般都是用DefaultTreeModel来加载树节点的
      

  3.   

    我也是用DefaultTreeModel但如果不想让他改变的话用JSplitPane应该不会变。