Динамически добавлять узлы в JTree

У меня есть такие данные (есть другие данные, такие как процент, но это не важно сейчас) в списке, которые могут варьироваться:

1        
1.1    
1.1.1  
1.1.2  
1.2        
2     
2.1
2.2 

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

Огромное спасибо.

1 ответ

Решение

Да, это легко сделать с помощью рекурсии. Идея состоит в том, чтобы проверить, есть ли уже узел в дереве, под которым может быть помещен новый узел. Например, если новый узел "1.1.2", то мы должны проверить, существует ли узел "1.1" в дереве. Я написал очень простой код, и он работает, я собираюсь справиться с этим. Если ты чего-то не понимаешь, просто дай мне знать, я объясню. Функция проверки наличия в дереве узла конкретной строки приведена ниже.

public DefaultMutableTreeNode findparentnode(String s,DefaultMutableTreeNode root){
    DefaultMutableTreeNode parent=null;
    for (int i=0;i<root.getChildCount();i++) {
        if(s.equalsIgnoreCase(((DefaultMutableTreeNode)root.getChildAt(i)).toString())){
             parent = (DefaultMutableTreeNode)root.getChildAt(i);
            break;
        }
        else
            parent=findparentnode(s, (DefaultMutableTreeNode)root.getChildAt(i));
    }
    return parent;
}

Теперь мы проверим каждую строку в списке. Мы пропустим последнюю часть строки и передадим оставшееся значение функции. Чтобы проверить строку, код приведен ниже

for(String s:list){
            String[] substr=s.split("\\.");
            String parent=substr[0];
            for(int i=1;i<substr.length-1;i++){
                parent=parent+ "." + substr[i];
            }
            DefaultMutableTreeNode node=null;
            node=findparentnode(parent,root);


            if(node==null)
                root.add(new DefaultMutableTreeNode(s));
            else
                node.add(new DefaultMutableTreeNode(s));

        }
Другие вопросы по тегам