2010-06-17 4 views
0

Je ne reçois aucun effet de DOM.setElementAttribute, est-ce que je fais quelque chose de mal?Comment définir les attributs dans GWT?

class MyListBox extends com.google.gwt.user.client.ui.ListBox { 
    .... 
    protected void setHoverAutoWidth() { 
    addDomHandler(new MouseOverHandler() { 
     public void onMouseOver(MouseOverEvent event) { 
     DOM.setElementAttribute(getElement(), "width", "auto"); 
     } 
    }, MouseOverEvent.getType()); 
    addDomHandler(new BlurHandler(){ 
     public void onBlur(BlurEvent event) { 
     DOM.setElementAttribute(getElement(), "width", "100px"); 
     } 
    }, BlurEvent.getType()); 
    } 
} 

(. Je sais qu'il existe des moyens moins aki pour changer la largeur que de définir l'attribut de style directement, mais je ne me soucie pas de css en ce moment)

Edit: Oops, juste réalisé que la largeur ne change pas la largeur du style, ajoute juste un attribut de largeur à l'étiquette (ce qui explique pourquoi rien ne se passe). Toutes les suggestions sur la façon de modifier le style sont toujours les bienvenues!

Répondre

1

Je suis assez sûr que tentera de définir l'attribut width de l'élément (qui peut ne pas exister pour le type d'élément que vous travaillez), PAS la propriété CSS width. Vous recherchez probablement setStyleAttribute.

1

Dans les versions ultérieures de GWT vous pouvez utiliser getElement().getStyle().setWidth(100, Unit.PX), ce qui vous donne un peu de justesse la compilation du temps supplémentaire sur les méthodes basés sur des chaînes dans la classe DOM. Utilisez getElement().getStyle().clearWidth() pour rétablir la largeur à auto.

Questions connexes