2012-06-05 202 views
1

我想在onBlur事件上使用java代碼更改g:標籤的顏色。 我正在使用eclipse,UIBinder。設置CSS樣式Uibinder Gwt

這是我的想法,雖然它不起作用。

在我StandardDocumentDownload.ui.xml文件

<ui:style>  
    .testStyle { 
    } 
    .styleRequiredData 
    { 
     color:red; 

    } 
</ui:style> 

這是我standardDocumentDownload.java文件

@UiHandler("comboTitle") 
void onComboTitleBlur(BlurEvent event) { 
    int title = comboTitle.getSelectedIndex(); 

    if(title == 0) 
    { 
     labTitleReq.setText("Please enter a value"); 
     labTitle.addStyleName("styleRequiredData"); 
    } 
    else 
    { 
     labTitleReq.setText(""); 
    } 

} 

我怎麼可以添加紅色到標籤的現有樣式事件在事件發生後。

親切的問候

回答

12

here下編程訪問內嵌樣式

你,這shoulbe是這樣的:

<ui:style type="com.yourapp.YourClass.MyStyle">  
    .testStyle { 
    } 
    .styleRequiredData 
    { 
     color:red; 
    } 
</ui:style> 

public class YourClass extends Widget { 
    interface MyStyle extends CssResource { 
     String testStyle(); 
     String styleRequiredData(); 
    } 

    @UiField MyStyle style; 

    /* ... */ 

    @UiHandler("comboTitle") 
    void onComboTitleBlur(BlurEvent event) { 
     int title = comboTitle.getSelectedIndex(); 
     if(title == 0){ 
      labTitleReq.setText("Please enter a value"); 
      labTitle.getElement().addClassName(style.styleRequiredData); 
     } else { 
      labTitleReq.setText(""); 
     } 
    } 
} 
+0

哈哈,40秒;) – Stefan

+0

我推薦'labTitle.addStyleName(style.styleRequiredData());'最好不要使用JavaScript元素。 – CorayThan

3

我花了一段時間才能找到它,但文檔; 「Declarative Layout with UiBinder: Programmatic access to inline Styles」告訴你如何。這裏,代碼片段

UiBinder的:

<ui:style type='com.my.app.MyFoo.MyStyle'> 
    .redBox { background-color:pink; border: 1px solid red; } 
    .enabled { color:black; } 
    .disabled { color:gray; } 
    </ui:style> 

    <div class='{style.redBox} {style.enabled}'>I'm a red box widget.</div> 

</ui:UiBinder> 

代碼後面:

public class MyFoo extends Widget { 
    interface MyStyle extends CssResource { 
    String enabled(); 
    String disabled(); 
    } 

    @UiField MyStyle style; 

    /* ... */ 

    void setEnabled(boolean enabled) { 
    getElement().addClassName(enabled ? style.enabled() : style.disabled()); 
    getElement().removeClassName(enabled ? style.disabled() : style.enabled()); 
    } 
} 

描述:

該元件具有一個新的屬性, 類型='com.my .app.MyFoo.MyStyle」。這意味着它需要實現 這個接口(在上面的MyFoo小部件的Java源代碼中定義) ,並提供它所調用的兩個CSS類,啓用和禁用。

現在看看@UiField MyStyle風格;字段在MyFoo.java中。 給出了代碼訪問爲 塊生成的CssResource。在打開和關閉窗口小部件時,setEnabled方法使用該字段應用啓用的和禁用的樣式。

您可以根據自己喜歡的方式自由定義具有指定類型的 塊,但您的代碼只能訪問接口要求的 。