簡體   English   中英

GWT中的基本面板嵌套

[英]Basic Panel nesting in GWT

在GWT中可以嵌套基本面板嗎?

<g:HTMLPanel>
     <g:HTMLPanel>
      .......
     </g:HTMLPanel>
  <g:ScrollPanel>
     <g:HTMLPanel>
      ........  
     </g:HTMLPanel>
  </g:ScrollPanel>
</g:HTMLPanel> 

我的問題是我需要滾動第二個HTML面板。 我的UIBinder將在父HTMLPanel下包含兩個子HTMLPanel。 但我需要第二個htmlpanel可滾動。

我剛剛創建了一個新的GWT項目,

UiBinder文件:

 <!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>
    .important {
        font-weight: bold;
    }
    </ui:style>
    <g:HTMLPanel>
        <g:HTMLPanel>
        First panel
    </g:HTMLPanel>
    <g:ScrollPanel height="100px">
    <g:HTMLPanel>
            aaaaaaaaaa<br/>aaaaaaaaaa<br/>aaaaaaaaaa<br/>aaaaaaaaaa<br/>
            aaaaaaaaaa<br/>aaaaaaaaaa<br/>aaaaaaaaaa<br/>aaaaaaaaaa<br/>
            aaaaaaaaaa<br/>aaaaaaaaaa<br/>aaaaaaaaaa<br/>aaaaaaaaaa<br/>
            aaaaaaaaaa<br/>aaaaaaaaaa<br/>aaaaaaaaaa<br/>aaaaaaaaaa<br/>
    </g:HTMLPanel>
    </g:ScrollPanel>
    </g:HTMLPanel>

</ui:UiBinder> 

和Java文件

public class RetaTest extends Composite implements HasText {

    private static RetaTestUiBinder uiBinder = GWT
            .create(RetaTestUiBinder.class);

    interface RetaTestUiBinder extends UiBinder<Widget, RetaTest> {
    }

    public RetaTest() {
        initWidget(uiBinder.createAndBindUi(this));
    }


    public RetaTest(String firstName) {
        initWidget(uiBinder.createAndBindUi(this));
    }


    @Override
    public String getText() {
        // TODO Auto-generated method stub
        return null;
    }


    @Override
    public void setText(String text) {
        // TODO Auto-generated method stub

    }

}

和onModuleLoad

  public void onModuleLoad() {

    RootPanel.get().add(new RetaTest());
  }

有用。 TestPicture

GWT中有一些小組可以根據其父母的意見和/或為他們的孩子提供意見。 例如,當您將HTMLPanel添加到RootPanel時,RootPanel會為此HTMLPanel提供其自己的大小(等於瀏覽器視圖)。

但是,HTMLPanel不實現ProvidesResize()接口。 因此,當您向其添加另一個HTMLPanel和ScrollPanel時,這些面板的初始高度為零。 之后,這些小組將自己的孩子帶到自己的高度。

這意味着您向ScrollPanel添加更多內容時將繼續擴展,並且永遠不會開始滾動。 您有兩個解決方案。

首先,您可以在ScrollPanel上設置一個高度(即height =“ 100px”)。

其次,您可以使用LayoutPanel而不是HTMLPanel作為視圖的容器,然后將HTMLPanel和ScrollPanel添加到此LayoutPanel的不同層。 每層為其子級提供大小。

在這兩種情況下,您的ScrollPanel都將具有指定的高度(以像素,百分比,ems等為單位)。因此,一旦其子代的高度超過其自身的高度,它將開始滾動。

固定滾動面板的寬度,但不固定其子HTML面板的寬度。 然后它應該工作。 除了相應地固定width屬性之外,您的代碼中沒有任何問題。

這只是您問題的精確解決方案。 但是要了解其他內容,請閱讀Andrevi Glovin給出的第一個答案。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM