2013-10-10 1 views
0

J'utilise UIBinder pour baliser l'interface. à un endroit que je mis un "logo" que je veux changer dynamiquement -Comment modifier dynamiquement l'image spécifiée dans le balisage de l'interface utilisateur via UIBinder et ClientBundle?

<!DOCTYPE ui:UiBinder SYSTEM "http://dl.google.com/gwt/DTD/xhtml.ent"> 
<ui:UiBinder xmlns:ui='urn:ui:com.google.gwt.uibinder' xmlns:g='urn:import:com.google.gwt.user.client.ui' > 
<ui:with field='res' type='com.myproject.client.resources.Resources' /> 

... 
<g:Image resource='{res.offline}'/> 
... 

J'utilise ClientBundle:

public interface Resources extends ClientBundle {  
    @Source("offline.png") 
    public ImageResource offline(); 

    @Source("online.png") 
    public ImageResource online(); 

    // ... and so on 
} 

Pour chaque utilisateur, propre logo. Lorsqu'un utilisateur démarre une session, son logo devient "en ligne" et vice versa.

Je me demande comment changer l'image déclarée dans le balisage UI.

Merci à tous.

+0

Je suppose que la solution peut être [ici] (http://stackoverflow.com/questions/17148534/gwt-dynamically-changing-an-image). J'essaie de l'utiliser. –

Répondre

0

La solution peut être représentée comme suit. Ajouter à l'élément UI attribut ui:field -

<g:Image url='{res.user1.getURL}' ui:field="imageUser1" />

Puis afficher/cacher l'image, en fonction d'une session utilisateur ou non.

@UiField Image imageUser1; 
... 
imageUser1.setVisible(true/ false); 

Il est également possible de modifier dynamiquement l'URL de l'image -

user1.setUrl(offlineImg.getUrl()); 

Etc.

Sujets qui me ont aidé -

Questions connexes