2009-05-14 10 views
1

Je n'arrive pas à ajouter une quantité variable d'étiquettes à un panneau. Mon problème est que pour une raison quelconque lors de l'ajout de mon ClickListener il renvoie void au lieu de widget (erreur). Si j'ai juste "new Label ('xyz')" qui fonctionne bien, mais j'ai besoin que chaque panneau ait son propre ClickListener. Voici le code:Ajout de widgets dynamiques à un panneau (GWT)

for (int x = 0; x < productIDArray.length(); x++) { 
    mainPanel.add(new Label("Test").addClickListener(new ClickListener() { 
    @Override 
    public void onClick(Widget sender) { 
     // TODO Auto-generated method stub 
    } 
    })); 
} 

Répondre

3

La valeur renvoyée par le chaînage de méthode est toujours la dernière valeur. Si vous modifiez le nouveau A().b().c(), le type renvoyé sera le type de retour de c.

Dans votre exemple, le type de retour new Label("Test").addClickListener(... est le type de retour addClickListener de ClickListener, qui est vide.

Vous pouvez créer l'étiquette, ajouter l'écouteur de clic, puis ajouter:

for(int x = 0;x<productIDArray.length();x++) { 
    Label l = new Label("Test); 
    l.addClickListener(...); 
    mainPanel.add(l); 
} 
+0

Merci, je craignais que ce serait tout simplement continuer à ajouter la même étiquette ou de jeter une erreur en raison de la boucle mais je voyez ce n'est pas le cas. – Organiccat