2009-10-07 12 views
1

Cela a peut-être déjà été demandé, mais je n'ai aucune idée de la manière de le rechercher.GWT Accéder aux méthodes des widgets sans connaître le nom du widget

J'ai un widget composite qui a des méthodes pour mettre à jour certains des widgets qui composent le widget composite. Lorsque j'ajoute ce widget composite à mon panneau, j'utilise une boucle do while pour extraire les données d'un fichier XML et remplir les données composites. Lorsque j'instancie l'objet à chaque fois pour ajouter les données, il a une portée locale à la boucle do-while et je ne peux pas appeler des méthodes pour mettre à jour les données dans le widget composite plus tard. Y at-il peut-être un moyen de faire un tableau de ces widgets composites ou d'une autre solution pour pouvoir accéder au Widget?

Eric

Répondre

3

... Bien sûr, utiliser

List<Composite> widgetList = new ArrayList<Composite>(); 
// loop 
widgetList.add(widget); 
// end loop 
widgetList.get(3).toString(); 

Vous voulez utiliser votre classe personnalisée au lieu de Composite dans la liste générique ... il n'y a rien qui vous empêche de faire des structures de données en utilisant des widgets , comme vous le feriez avec n'importe quelle autre classe Java.

+0

merci pour l'aide! a bien fonctionné. –

+0

Ensuite, il serait utile si vous avez marqué la réponse comme correcte et fermé la question: D –

1

Je recommande vraiment que vous regardez "les meilleures pratiques pour Architecturer GWT App" (de Google I/O 2009):

http://www.youtube.com/watch?v=PDuhR18-EdM

A environ 24 minutes à travers elle parle de la façon d'écrire des widgets composites utilisant le modèle de conception MVP - bien que vous devriez regarder tout cela. Malheureusement, il ne fournit pas de snipets de code prêts à l'emploi, mais il vous montre comment construire un framework pour découpler joliment vos objets XML et UI.

+0

Merci pour l'information, je vais jeter un oeil. –

2

Si vous mettez tous vos Widgets dans cette boucle dans un panneau (probablement sur des sous-classes de ComplexPanel, puisque vous ajoutez plusieurs widgets à un panneau), vous pouvez utiliser l'une des méthodes pour accéder Widget s contenus dans un panneau (en supposant que vous ajoutez uniquement les XML généré Widget s au panneau et rien de plus):

  • com.google.gwt.user.client.ui.ComplexPanel.iterator() - retourne un java.util.Iterator<Widget> vous pouvez utiliser pour parcourir la liste des Widget s au sein de ce groupe
  • com.google.gwt.user.client.ui.ComplexPanel.getWidgetCount() et getWidget(int index) peut être utilisé dans une boucle à passer par tous les widgets dans un panneau

Alors, regardons un exemple:

VerticalPanel vPanel = new VerticalPanel(); 

// Fill up the vPanel using XML 

Iterator<Widget> iterator = vPanel.iterator(); 

while(iterator.hasNext()) { 
    Widget w = iterator.next(); 
    // Do something with w 
} 

// Or... 
for (int i = 0; i < vPanel.getWidgetCount(); i++) { 
    Widget w = vPanel.getWidget(i); 
    // Do something with w 
} 

Bien sûr, remplacer VerticalPanel avec celui que vous utilisez-vous :)

Questions connexes