Java 如果我将RootPanel更改为RootLayoutPanel,我的浏览器将忽略滑块。为什么?

Java 如果我将RootPanel更改为RootLayoutPanel,我的浏览器将忽略滑块。为什么?,java,gwt,Java,Gwt,当我有很多小部件时,一个页面就可以显示了,这是一种新的方式 在我的浏览器中不显示滑块。用“老”的方式 是的。为什么?我想在GWT布局类中使用“现代”方式(使用TabLayoutPanel),但现在不行 (My index.html以开头) 编辑:如果我更改为 RootLayoutPanel.get().add( new ScrollPanel( widget) ); 它起作用了!我不知道这是否正确…它们是相互排斥的,RootPanel支持在浏览器级别自动调整大小和自动滚动条。例如,如果您将项目

当我有很多小部件时,一个页面就可以显示了,这是一种新的方式

在我的浏览器中不显示滑块。用“老”的方式

是的。为什么?我想在GWT布局类中使用“现代”方式(使用TabLayoutPanel),但现在不行

(My index.html以
开头)

编辑:如果我更改为

RootLayoutPanel.get().add( new ScrollPanel( widget) );

它起作用了!我不知道这是否正确…

它们是相互排斥的,
RootPanel
支持在浏览器级别自动调整大小和自动滚动条。例如,如果您将项目放入一个表中,并添加足够的内容使其离开屏幕底部,
RootPanel
将自动添加一个滚动条,以便您可以进入底部元素,
RootLayoutPanel
将不会,除非您将该元素放在
滚动面板
中,然后它与
根面板
的功能不同

RootLayoutPanel
希望您手动控制所有这些。你可以选择其中一个,但不能同时选择两个。当使用
RootLayoutPanel
通知
Layout
部分何时重新布局时,必须将处理程序绑定到
resize
事件


RootLayoutPanel
的目标是允许您创建更像桌面的基于web的应用程序。它不应该取代
RootPanel
,除非它支持或不支持您尝试执行的操作,否则它不会更好或更差。

我使用LayoutPanels和SimplePanel作为我的主布局(附加到RootLayoutPanel)。对于可能需要滚动条的面板,我只需添加样式:

.overflow {
    overflow: auto;
}
下面给出了一个示例模板。我认为使用ScrollPanels而不是SimplePanels将是一种同样有效的方法,这取决于哪个最适合您的设计/需求。我更喜欢只在需要滚动条的地方使用滚动条,所以我使用overflow:auto

  <ui:style>
    .filterPanel {
        padding: 10px;
        background-color: #CCCCCC;
    }
    .overflow {
        overflow: auto;
    }
  </ui:style>
  <g:LayoutPanel styleName="ListLayoutPanel">
    <g:layer left="0px" width="300px">
      <g:SimplePanel ui:field="filterPanel" styleName="{style.filterPanel}" />
    </g:layer>
    <g:layer left="300px" right="500px">
      <g:SimplePanel ui:field="tablePanel" styleName="{style.overflow}"></g:SimplePanel>
    </g:layer>
    <g:layer width="500px" right="0px">
      <g:SimplePanel ui:field="detailPanel" styleName="{style.overflow}"/>
    </g:layer>
  </g:LayoutPanel>
</ui:UiBinder>

过滤板{
填充:10px;
背景色:#中交;
}
.溢出{
溢出:自动;
}
.overflow {
    overflow: auto;
}
  <ui:style>
    .filterPanel {
        padding: 10px;
        background-color: #CCCCCC;
    }
    .overflow {
        overflow: auto;
    }
  </ui:style>
  <g:LayoutPanel styleName="ListLayoutPanel">
    <g:layer left="0px" width="300px">
      <g:SimplePanel ui:field="filterPanel" styleName="{style.filterPanel}" />
    </g:layer>
    <g:layer left="300px" right="500px">
      <g:SimplePanel ui:field="tablePanel" styleName="{style.overflow}"></g:SimplePanel>
    </g:layer>
    <g:layer width="500px" right="0px">
      <g:SimplePanel ui:field="detailPanel" styleName="{style.overflow}"/>
    </g:layer>
  </g:LayoutPanel>
</ui:UiBinder>