Фильтр Java ExplorerManager - PullRequest
       43

Фильтр Java ExplorerManager

0 голосов
/ 24 августа 2018

Я реализовал https://blogs.oracle.com/geertjan/file-browser, чтобы показывать только папки (изменено == в accept () на! =). Тем не менее, независимо от того, что я сделал, он вызывает только FileFilterNodeChildren для первого уровня, дочерних элементов корневого узла. Так что я получаю папки корневого узла (каталог, который я хочу), но он показывает ВСЕ файлы и папки ниже этого уровня. Я вставил в операторы, которые проверяют, что функция фильтра вызывается только для первого уровня.

Что мне нужно сделать, чтобы отфильтровать детей первого уровня и ниже?

1 Ответ

0 голосов
/ 23 октября 2018

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

@Override
protected Node[] createNodes(Node object) {
    List<Node> result = new ArrayList<Node>();
    for (Node node : super.createNodes(object)) {
        if (accept(node)) {
            // This is the only changed line
            result.add(new FileFilterNode(node));
        }
    }
    return result.toArray(new Node[0]);
}

Это было протестировано в NetBeans 8.2 для Windows и работает как положено.«Браузер файлов» отображает дерево, содержащее только папки на всех уровнях.

...