Заполнение JTree из базы данных - PullRequest
5 голосов
/ 22 февраля 2011

У меня есть таблица с полями category_id, category_name и parent_category_id.И parent_category_id имеет значения из category_id, который представляет родительские дочерние отношения.У меня нет какого-либо фиксированного уровня иерархии, он может доходить до 5 уровней или 10 уровней, и нет никаких ограничений для этого ... Мне нужен код для того, как реализовать это JTree, чтобы заставить меня работать.Я должен быть в состоянии реализовать то же самое для строки меню .. Пожалуйста, помогите мне с этим ..

После поиска в Google я нашел это,

Map<String, Node> idToNode = new HashMap<String, Node>();   

//create nodes from ResultSet   
while ( resultSet.next() ){       
    Node node = //create node -contains info, parent id, and its own id from ResultSet
    //put node into idToNode, keyed with its id   
}   

//link together   
Iterator<String> it = idToNode.keySet().iterator();   
Node root = null;   
while ( it.hasNext() ){          
    Node node = idToNode.get(it.next());       
    Node parent = idToNode.get(node.getParentId());   
    if ( parent == null ) {  
        root = node;  
    }else{  
       parent.addChild(node);  
    }  
}

Как мне кодировать эти закомментированные инструкции

1 Ответ

3 голосов
/ 22 февраля 2011

Используйте DefaultMutableTreeNode для создания ваших узлов

Создайте карту идентификаторов для узлов - когда вы получаете ваши узлы из базы данных, сохраняйте их на карте с идентификатором в качестве их ключа.

Как только вы соберете все свои узлы, еще раз просмотрите их и сопоставьте их родительские идентификаторы, извлекая их из карты.

Предполагая, что ваше дерево структурно устойчиво в базе данных, оно будетЗвук здесь.Выберите любой узел и следуйте по родительской цепочке в корневой каталог.

С помощью корневого объекта вы можете создать свое JTree.:)

...