我使用 JTree 组件来实现本地硬盘的文件浏览,就相当于资源管理器。但是一次性遍历所有文件太耗内存,运行时间也太慢,所以我想在用鼠标点击“+” 展开一个目录时,再进入下一层目录的遍历。但是现在的问题是,我点击“+”时,不知道这样获取“+”所在节点是否正确?我这么试了,但是显示不了。
void jTree1_treeExpanded(TreeExpansionEvent e) {
TreePath treePath = e.getPath();
      DefaultMutableTreeNode TreeMem = (DefaultMutableTreeNode)treePath.getLastPathComponent();
TreeMem.add(new DefaultMutalbeTreeNode("test"));
//model.reload();
不知道为什么不对,不加 model.reload的话 新添加的节点“test” 没有显示,加上model.reload()的话就不能展开“+”了!
请高手指点,急!!!

解决方案 »

  1.   

    class LeftPanel extends JPanel{
       private int i = 0;
       public LeftPanel(){
       DefaultMutableTreeNode root = new DefaultMutableTreeNode("Root");
       DefaultMutableTreeNode child = new DefaultMutableTreeNode("Child");
       DefaultMutableTreeNode select = new DefaultMutableTreeNode("select");
       DefaultMutableTreeNode child1 = new DefaultMutableTreeNode(""+i);
          
       root.add(child);
       root.add(select);
       child.add(child1);

       JTree tree = new JTree(root);
       tree.getSelectionModel().setSelectionMode(TreeSelectionModel.DISCONTIGUOUS_TREE_SELECTION);// 每个节点的行高
       tree.setRowHeight(20);
       tree.addTreeSelectionListener(new TreeSelectionListener (){
          public void valueChanged(TreeSelectionEvent e){// 内隐类不能直接引用外部类tree,1.外部变量可申明为final 2.新建外部类的对象
             JTree tree =(JTree)e.getSource();
    DefaultMutableTreeNode selectNode = (DefaultMutableTreeNode)tree.getLastSelectedPathComponent();
    i++;
    selectNode.add(new DefaultMutableTreeNode(""+i));
          }
       });
       tree.setPreferredSize(new Dimension(100,300));
       //tree.setEnabled(true);
       JScrollPane scrollPane = new JScrollPane(tree);
       //scrollPane.setSize(100,350);
       this.add(scrollPane);
       }
    }
    你看看这个吧~~~是抄来的,不明白什么意思~~~希望能帮到你~~