JTree проверка на наличие дублирующихся категорий - PullRequest
0 голосов
/ 13 июля 2010

Я пытаюсь сгенерировать JTree на основе набора результатов базы данных. Я получаю

Category | Name
-------- | ----
   A     |  1
   B     |  2
   A     |  3

из базы данных. Как я могу добавить категорию в JTree только при необходимости? Я бы хотел, чтобы дерево выглядело так:

[Root]
    [Category A]
         Child 1
         Child 3
    [Category B]
         Child 2             

Это то, что я имею до сих пор:

    //Get the blueprints
    SqlHelper shelp = new SqlHelper();
    ArrayList<BaseInformation> bpList = shelp.getBlueprints();

    //Add each to model
    for(int x = 0; x < bpList.size(); x++){
        BaseInformation info = bpList.get(x);
        category = new DefaultMutableTreeNode(info.blueprintCategory);
        top.add(category);
        category.add(new DefaultMutableTreeNode(info.blueprintName));
    }

    JTree tree = new JTree(top);

    TreeModel model = tree.getModel();

    return model;

1 Ответ

0 голосов
/ 13 июля 2010

Хорошо, вы можете выполнить поиск, начиная с корневого узла вашего дерева, чтобы проверить наличие категории. Если ваше дерево такое же мелкое, как и ваш пример, вероятно, достаточно просто выполнить итерации по дочернему элементу корневого узла (), но DefaultMutableTreeNode также имеет перечисления шириной и глубиной.

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

...