2010-10-19 5 views
2

Je crée un arbre GWT et je voudrais qu'il soit initialement affiché avec des noeuds ouverts. Prenons la norme Tree example from GWT javadocs:Afficher les noeuds ouverts dans un arbre GWT

public class TreeExample implements EntryPoint { 

    public void onModuleLoad() { 
    // Create a tree with a few items in it. 
    TreeItem root = new TreeItem("root"); 
    root.addItem("item0"); 
    root.addItem("item1"); 
    root.addItem("item2"); 

    // Add a CheckBox to the tree 
    TreeItem item = new TreeItem(new CheckBox("item3")); 
    root.addItem(item); 

    Tree t = new Tree(); 
    t.addItem(root); 

    // Add it to the root panel. 
    RootPanel.get().add(t); 
    } 
} 

Je veux d'abord affiché comme:

 
root 
    item0 
    item1 
    item2 
    item3 

Maintenant, je pensais qu'il était aussi simple que de l'état de la TreeItem que je veux être ouvert par appeler setState(true): javadoc pour setState indique "Définit si les enfants de cet élément sont affichés". Cependant, si j'ajoute par exemple

root.setState(true); 

à l'exemple ci-dessus, je n'obtiens pas l'effet attendu. Apparemment, rien ne change quand je fais root.setState(true); ou root.setState(false);: l'arbre est toujours affiché avec ses nœuds fermés.

Comment obtenir le comportement souhaité?

+0

Juste après avoir posté la question j'ai trouvé un moyen de faire presque ce que je veux: Je dois appeler 't.setSelectedItem (item);' pour sélectionner un élément sous le nœud racine, puis appeler 't.ensureSelectedItemVisible() ; ', qui" garantit que l'élément actuellement sélectionné est visible, ouvre ses parents et fait défiler l'arbre si nécessaire ". Existe-t-il un autre moyen de le faire sans sélectionner explicitement un élément? – MarcoS

+1

'root.setState (true)' fonctionne bien pour moi (GWT 2.0.4 et FF). Pouvez-vous nous donner des informations sur la version et le navigateur? – z00bs

+0

J'utilise GWT 2.0.3 et Firefox 3.6.10. Serait-ce un bug dans GWT 2.0.3? – MarcoS

Répondre

2

L'appel à setState() dépend de la séquence du procédé à des appels TreeItem et Tree (comme indiqué here). En règle générale, appelez setState(true) après avoir ajouté tous les éléments au TreeItem et après avoir ajouté l'élément racine au Tree.

Questions connexes