ScrollPanel(高度)奇怪的行为GWT,

时间:2011-02-07 17:13:00

标签: gwt height scroll panel

我对ScrollPanel的行为很奇怪。它将高度缩小到30px。 这是我的ui.xml

    <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&amp;之间切换fileTablePanel + uploader,当我显示uploader+fileTablePanel时,它会显示滚动条,但当我切换到filePreview时,它会将filePreview面板的高度缩小为〜30像素。可能是什么问题呢。当我在div中将ScrollPanel的子firebug的高度更改为100%时,它显示页面正常,但似乎我无法访问ScrollPanel的子div,任何解决办法:

此外,当尝试在ScrollPanel中创建一个UiField时,它会抛出it can have only one child的异常,实际上它会有一个子节点。

谢谢你。 人

2 个答案:

答案 0 :(得分:1)

我知道问题已经有一段时间了,但这是我在遇到同样问题时使用的解决方案:

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

这是因为Scroll面板是一个简单的面板。

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>

答案 1 :(得分:0)

尝试将带有height:100%;的styleName设置为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>