Flex - 如何显示文件系统的树状视图?

时间:2012-03-17 06:56:40

标签: java flex

我需要这样的文件系统视图。

folder_name    
|_sub_folder1
|  |_file1
|  |_file2
|_sub_folder2
   |_file1

请发表您的意见。

2 个答案:

答案 0 :(得分:1)

Flex与您的问题有什么关系?

您已经问过这个问题并得到了答案:使用一棵树。此外,您没有说明是否要处理结构(通过它运行),将其存储在内存中,或者是否要以可视方式显示树。

如果您将其放入内存,请创建一个基于节点的树,其中每个Node都有List Node秒。每个节点的值都是包含文件名的String。以下是一个例子。我建议想出一些更有用的东西。您可以使用JTree API或DOM API,但我建议从头开始创建一个树,因为它的内存占用量要小得多。

import java.util.ArrayList;
import java.util.List;

public class TreeTest {

    public static void main(String[] args) {

        Tree<String> t = new Tree<>();

        Tree.Node<String> usr = new Tree.Node<>("/usr");
        Tree.Node<String> home = new Tree.Node<>("/home");
        Tree.Node<String> share = new Tree.Node<>("/share");
        Tree.Node<String> docs = new Tree.Node<>("/documents");

        t.root = new Tree.Node<>("/");
        t.root.children.add(usr);
        t.root.children.add(home);

        usr.children.add(share);
        home.children.add(docs);
    }
}

class Tree<T> {

    Node<T> root;

    static class Node<T> {

        T file;
        List<Node<T>> children = new ArrayList<>();

        Node(T file) {
            this.file = file;
        }
    }
}

答案 1 :(得分:1)

首先,浏览器中的Flex不会授予您访问任何文件系统信息的权限,只有AIR项目才允许您访问文件和目录。

现在,如果您只是想创建一个树,我发现最简单的方法是创建自己的对象,使用一个数组属性“children”,flex树控件将自动使用它来显示子节点。

这样:

<mx:Tree id="treeProducts" labelField="productName" 
         dataProvider="{_productList}">
</mx:Tree>

其中:

[Bindable]
var _productList:ArrayCollection;

并且对于放入_productList的每个对象,它需要:

tmpObject.children = new ArrayCollection();