Flex - Как отобразить древовидный вид файловой системы? - PullRequest
0 голосов
/ 17 марта 2012

Мне нужно посмотреть на файловую систему, как это.

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

Пожалуйста, дайте ваши комментарии.

Ответы [ 2 ]

1 голос
/ 17 марта 2012

Прежде всего, Flex в браузере не предоставит вам доступ к какой-либо информации о файловой системе, только проекты AIR позволят вам получить доступ к файлам и каталогам.

Теперь, если вы просто пытаетесь создать дерево, я обнаружил, что проще всего создать свой собственный объект со свойством массива "children", которое будет автоматически использоваться элементом управления flex tree для отображения подузлов.

так:

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

где:

[Bindable]
var _productList:ArrayCollection;

и для каждого объекта, который вы помещаете в _productList, требуется:

tmpObject.children = new ArrayCollection();
1 голос
/ 17 марта 2012

Какое отношение имеет Flex к вашему вопросу?

Вы уже задали этот вопрос и получили ответ: используйте дерево.Кроме того, вы не говорите, хотите ли вы обработать структуру (выполнить ее), сохранить ее в памяти или хотите визуально отобразить дерево.

Если вы помещаете ее в память,создайте основанное на узле дерево, где каждый Node имеет List из 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;
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...