我使用 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()的话就不能展开“+”了!
请高手指点,急!!!
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()的话就不能展开“+”了!
请高手指点,急!!!
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);
}
}
你看看这个吧~~~是抄来的,不明白什么意思~~~希望能帮到你~~