2012-03-17 57 views
-1

我需要这样的文件系统的视图。Flex - 如何显示树状文件系统的视图?

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

请给出您的意见。

+1

是这样的Java服务器 - Flex客户端应用程序桥?或者它是在Java框架(如Android)上工作的Flex(AIR)应用程序? – 2012-03-17 17:48:27

回答

1

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

你已经问过这个问题,并得到你的答案:使用一棵树。此外,您不会说是否要处理结构(通过它运行),将其存储在内存中,还是要显示树状结构。

如果将它放入内存中,请创建一个基于节点的树,其中每个NodeList的值为Node s。每个节点的值是包含文件名的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; 
     } 
    } 
} 
+0

谢谢你的帮助,但这段代码工作不正常。它会在“t.root.children.add(usr);”行中抛出NullPointerException异常请回答我适当的解决方案。我会很感激你。 – 2012-03-17 11:17:45

+0

@Muhammad:我更新了代码。 – blackcompe 2012-03-17 16:05:40

1

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

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

这样:

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

[Bindable] 
var _productList:ArrayCollection; 

,并为每个对象,你把_productList,它需要:

tmpObject.children = new ArrayCollection(); 
相关问题