2011-02-07 83 views
1

我收到ScrollPanel的怪異行爲。它將高度縮小到30px。 這裏是我的ui.xmlScrollPanel(高度)奇怪的行爲GWT,

<g:ScrollPanel styleName="{style.fileViewerWorkspaceBg}"> 
     <g:FlowPanel> 
    <g:FlowPanel> 
      <g:FlowPanel> 
     <my:OneClickFileUploader ui:field="uploader" enableMultipleFileUpload="true" /> 
    </g:FlowPanel> 
    <g:FlowPanel ui:field="fileTablePanel"> 
     <cell:SimplePager ui:field="pager"/> 
     <cell:CellTable ui:field="fileViewTable"/> 
    </g:FlowPanel> 
     <g:Label ui:field="processingField" /> 
    </g:FlowPanel> 
    <g:FlowPanel ui:field="filePreview"/> 
    </g:FlowPanel> 
</g:ScrollPanel> 

我切換filePreview之間& fileTablePanel + uploader,當我顯示uploader+fileTablePanel,它讓我看到滾動條,但是當我切換到filePreview,它縮小filePreview面板的高度〜30像素。可能是什麼問題呢。當我將ScrollPanel的子div的高度更改爲firebug中的100%時,它顯示頁面正常,但似乎無法訪問ScrollPanel的子div,任何解決方法?

此外,當嘗試使ScrollPanel在java類的UiField它拋出的例外,it can have only one child和實際上它有一個孩子。

謝謝。 al

回答

0

嘗試將styleName與height:100%;設置爲FlowPanel(生成HTML中的div)。
此外您的代碼「缺少結束標記g:FlowPanel」。
可能在</g:ScrollPanel>之前的標籤中存在拼寫錯誤,應該是</g:FlowPanel>而不是<g:FlowPanel />

<ui:style> 
    .container { 
     background: #DDD; 
     height:1500px; 
     width:100%; 
    } 
    .fileViewerWorkspaceBg { 
     height:100%; 
    } 
    .zero { 
     background-color: yellow; 
     height:300px; 
    } 
    .first { 
     background-color: blue; 
     height:50px; 
    } 
    .fileTablePanel { 
     background-color: red; 
     height:150px; 
    } 
</ui:style> 

<g:ScrollPanel styleName="{style.fileViewerWorkspaceBg}"> 
    <g:FlowPanel styleName="{style.container}"> 
     <g:FlowPanel styleName="{style.zero}"> 
      <g:FlowPanel styleName="{style.first}"> 
       <g:Label>OneClickFileUploaderPanel</g:Label> 
       <my:OneClickFileUploader ui:field="uploader" 
        enableMultipleFileUpload="true" /> 
      </g:FlowPanel> 
      <g:FlowPanel styleName="{style.fileTablePanel}"> 
       <g:Label>fileTablePanel</g:Label> 
       <cell:SimplePager ui:field="pager" /> 
       <cell:CellTable ui:field="fileViewTable" /> 
      </g:FlowPanel> 
      <g:Label>Label</g:Label> 
     </g:FlowPanel> 
    </g:FlowPanel> 
</g:ScrollPanel> 
+0

是,結束標記G:FlowPanel是一個錯字。但將高度設置爲100%不起作用。 :(任何想法? – Deam 2011-02-08 09:23:26

1

我知道它已經有一段時間,因爲這個問題被問,但是這是我使用時面臨着同樣的問題的解決方案:

getContainerElement().getStyle().setHeight(100, Unit.PCT); 

這是因爲滾動面板是一個簡單的面板。

public ScrollPanel() { 
this.scrollableElem = getElement(); 
this.containerElem = Document.get().createDivElement(); 
scrollableElem.appendChild(containerElem); 
initialize(); 
} 

當構件被設置/添加,通過代碼或UiBinder的,它將用於this.containerElem保持其子

這是所得到的HTML。我,希望將它們命名爲使其更清晰:

<div id="ScrollPanel" > 
    <div id="containerElem" style="position: relative; zoom: 1; height: 100%;"> 
     <canvas id="myAddedWidget" /> 
    </div> 
</div>