Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/gwt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java GWT中的基本面板嵌套_Java_Gwt - Fatal编程技术网

Java GWT中的基本面板嵌套

Java GWT中的基本面板嵌套,java,gwt,Java,Gwt,在GWT中是否可以对基本面板进行以下嵌套 <g:HTMLPanel> <g:HTMLPanel> ....... </g:HTMLPanel> <g:ScrollPanel> <g:HTMLPanel> ........ </g:HTMLPanel> </g:ScrollPanel> </g:HTMLPanel> ...

在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> 

它起作用了

GWT中有一些面板可以从父母那里获取尺寸和/或为孩子提供尺寸。例如,将HTMLPanel添加到RootPanel时,RootPanel会为此HTMLPanel提供自己的大小(等于浏览器视图)

然而,HTMLPanel并没有实现providesize()接口。因此,当您向其中添加另一个HTMLPanel和一个ScrollPanel时,这些面板的初始高度为零。之后,这些面板从他们自己的孩子身上测量高度

这意味着,当您向滚动面板添加更多内容时,它将继续扩展,并且永远不会开始滚动。您有两个选项来修复此问题

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

其次,您可以使用LayoutPanel而不是HTMLPanel作为视图的容器,并将HTMLPanel和ScrollPanel添加到此LayoutPanel的不同层。每个层为其子层提供一个大小


在这两种情况下,您的ScrollPanel都将具有指定的高度(以像素、百分比、ems等为单位),因此,一旦其子级的高度超过其自身的高度,它将开始滚动

固定滚动面板的宽度,但不要固定其子HTML面板的宽度。那么它应该会起作用。 代码中没有问题,只是相应地修改了宽度属性


这正是你问题的确切解决办法。但要了解更多,请阅读Andrevi Glovin给出的第一个答案。

我已经测试过,但似乎不起作用。想知道你的简短答案。你是如何让它工作的?我知道它是用java代码工作的。但请再读一遍这个问题,我是用UiBinder问的,也用UiBinder写的。@Ovi。。感谢您的努力。没有在滚动面板上添加height=“100px”是我的错误。
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

    }

}
  public void onModuleLoad() {

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