Java: procédure de programmation pour sélectionner et développer plusieurs nœuds dans un JTree?

J'ai un JTree et un awt.Canvas. Lorsque je sélectionne plusieurs objets dans le Canvas dans le objList, je veux que tous les éléments sélectionnés pour être montré à l'intérieur de la JTree sélectionnée. Que signifie, par exemple, si j'ai 2 objets sélectionnés, leurs chemins d'accès à la racine doit être élargie, et chaque objet sélectionné doit avoir son correspondant TreeNode sélectionné. Mon JTree a TreeSelectionModel.DISCONTIGUOUS_TREE_SELECTION.

Voici un exemple de l'expansion de fonction que j'utilise :

public void selectTreeNodes() {


    HashMap <String, MyEntity> entities = ...;
    Iterator it = entities.keySet().iterator();
    while (it.hasNext()) {

        String str = it.next().toString();
        MyEntity ent = entities.get(str);

        if (ent.isSelected()) {
            DefaultMutableTreeNode searchNode = searchNode(ent.getName());
            if (searchNode != null) {

                TreeNode[] nodes = ((DefaultTreeModel) tree.getModel()).getPathToRoot(searchNode);
                TreePath tpath = new TreePath(nodes);
                tree.scrollPathToVisible(tpath);
                tree.setSelectionPath(tpath);
            }
        }
    }
}

public DefaultMutableTreeNode searchNode(String nodeStr) 
{ 
    DefaultMutableTreeNode node = null; 

    Enumeration enumeration= root.breadthFirstEnumeration(); 
    while(enumeration.hasMoreElements()) {

        node = (DefaultMutableTreeNode)enumeration.nextElement(); 
        if(nodeStr.equals(node.getUserObject().toString())) {

            return node;                          
        } 
    } 

    //tree node with string node found return null 
    return null; 
}

Dans mon état actuel, si je sélectionne un objet unique, il sera sélectionné dans le JTree et ses TreePath sera affiché.
Mais si entities a plus de 1 objet sélectionné, il affiche rien, mon JTree restera inchangée.

"j'ai un JTree et un awt.Canvas." Ne pas mélanger le Swing avec des composants AWT. Le Canvas devrait être un JPanel ou une image affichée dans un JLabel.
Je sais que je ne devrais pas l'habitude le faire (j'ai quelques problèmes avec le menu principal de l'expansion derrière la toile), mais dans ce cas, le seul lien entre eux est le tableau d'entités à partir de la toile qui sont représentés dans l'arbre. Et dans l'interface graphique il y a un espace entre eux, si aucun dommage n'est fait/

OriginalL'auteur Pantaziu Cristian | 2012-04-20