2010-07-12 6 views
0

J'essaie de générer un JTree basé sur un jeu de résultats de base de données. Je reçoisJTree vérifier les catégories en double

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

de la base de données. Comment puis-je ajouter la catégorie au JTree seulement si nécessaire? Je voudrais l'arbre pour ressembler à:

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

C'est ce que j'ai jusqu'à présent:

//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; 

Répondre

0

Eh bien, vous pouvez faire une recherche à partir du nœud racine de l'arborescence pour vérifier existence d'une catégorie. Si votre arbre est aussi superficiel que votre exemple, il suffit probablement d'effectuer une itération sur children() du nœud racine, mais DefaultMutableTreeNode possède également des énumérations de largeur et de profondeur en premier.

Si cela est trop lent (si votre arborescence est très grande ou imbriquée profondément), vous pouvez également conserver une carte de catégories distincte pour les nœuds de l'arborescence et les rechercher de cette manière. Quoi qu'il en soit, si vous ne pouvez pas trouver un nœud existant pour une catégorie, vous créez et ajoutez un nouveau nœud, sinon réutilisez ce qui a été trouvé.

Questions connexes