2011-02-07 96 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>