2012-03-17 45 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();