2010-04-21 64 views
0

我創建一個使用UiBinder的一個GWT應用程序,我已經遇到其中的樣式並不適用於我的元素一個奇怪的問題 - 直到我刷新瀏覽器,然後在頁面刷新之前的幾分之一秒內,這些樣式會暫時得到應用。換句話說:GWT風格不適用

  1. 打開頁面;沒有使用我定義的樣式。
  2. 點擊刷新
  3. 對於樣式使用的幾分之一秒,頁面變成空白
  4. 頁面將重新加載之前,沒有風格再次

我要包括我的整個*ui.xml文件,因爲它不是太大。

<!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:style> 
     .idLabelStyle { 
      font-weight: bold; 
      text-align: center; 
      width: 100px; 
      border-style: solid; 
      border-width: 1px; 
      margin-right: 5px; 
     } 

     .nameLabelStyle { 
      font-weight: bold; 
      text-align: center; 
      width: 500px; 
      border-style: solid; 
      border-width: 1px; 
      margin-right: 5px; 
     } 

     .addressLabelStyle { 
      font-weight: bold; 
      text-align: center; 
      width: 500px; 
      border-style: solid; 
      border-width: 1px; 
     } 
    </ui:style> 
    <g:HTMLPanel> 
     <g:HorizontalPanel> 
      <g:Label addStyleNames="{style.idLabelStyle}">ID</g:Label> 
      <g:Label addStyleNames="{style.nameLabelStyle}">Name</g:Label> 
      <g:Label addStyleNames="{style.addressLabelStyle}">Address</g:Label> 
     </g:HorizontalPanel> 
    </g:HTMLPanel> 
</ui:UiBinder> 

我真的很希望我失去了一些簡單的東西。

回答

0

而不是addStyleNames=使用setStyleName=setStylePrimaryName=我以前有過這個問題,它修復了我的情況。 注:兩個possiblities如下所示...

setStyleName 
Clears all of the object's style names and sets it to the given style. You should normally use setStylePrimaryName(String) unless you wish to explicitly remove all existing styles. 

setStylePrimaryName 
Sets the object's primary style name and updates all dependent style names. 
+0

謝謝羅曼。儘管如此,仍然沒有運氣。我得到了和以前一樣的結果。 ID 和 ID 都給我相同的結果。 – sernaferna 2010-04-21 15:19:43

+1

嘗試 ID – 2010-04-21 15:26:03

+0

'styleName =「...」'是正確的,GWT在後臺將其轉換爲'setStyleName'。 – 2010-04-21 15:29:28

0

幸運還是不幸,我不再使用這個小部件在我的應用程序;但是,我不想丟失代碼,因爲這個問題讓我感到瘋狂,我想知道我錯過了什麼。

不幸的是,改變我的代碼後,再重新添加小部件來測試它,我不能再現問題了。

這可能是我將widget添加到我的UI的方式;我不記得我最初是如何添加它的(它之前的變化太多了),但我現在通過使用add(Widget)方法將它添加到VerticalPanel,並且現在應用這些樣式沒有問題。

感謝評論者跟隨我在我的野鵝追逐。我希望我有一個更滿意的答案...

+0

做了一些更多的研究和... 問題是,GWT混淆了樣式。 請參閱http://groups.google.com/group/google-web-toolkit/browse_thread/thread/dde31397ef4914a1/9e27674998a20645 – 2010-04-21 18:08:30

+0

GWT會混淆樣式,但只要您使用上述格式,就沒問題。即'addStyleNames =「{style.idLabelStyle}」' - 注意大括號,以及我們使用'style.'前綴限定樣式名稱的事實。當GWT編譯這段代碼時,他們會在封面下使用混淆名稱,但我們的代碼可以使用我們定義的名稱。 – sernaferna 2010-04-22 13:03:10