带滚动的TabLayoutPanel

时间:2010-04-27 18:02:01

标签: gwt2 gwt-tablayoutpanel

我在GWT应用程序中使用TabLayoutPanel,附加到页面的RootLayoutPanel。

在每个标签页面中,我有一个ScrollPanel,用于显示FlexTable。

是否可以使TabLayoutPanel垂直增长,因此用户可以使用浏览器滚动条滚动整个页面,而不是使用内部ScrollPanel?

4 个答案:

答案 0 :(得分:2)

简短的回答是:使用LayoutPanel是不可能的。原因是:LayoutPanel特定于需要填充浏览器客户区的应用程序,或者换句话说是用户可见的部分。浏览器的一个问题是使窗口小部件具有完全可见区域的高度,并在调整浏览器窗口大小时自动调整大小。这是LayoutPanels解决的问题之一。

如果您想使用浏览器滚动条并且能够创建比可见区域更长的页面,请使用“普通”面板。

顺便说一下,你知道FlexTable渲染速度慢,如果可能的话,更好地使用Grid。

答案 1 :(得分:1)

只需向TabLayoutPanel添加新样式:

this.addStyleName("tab-style-content");

在CSS中定义为:

.tab-style-content .gwt-TabLayoutPanelContent
{
overflow: auto;     
}

因此,属性overflow将在gwt-TabLayoutPanelContent中被覆盖,滚动条将自动显示。

答案 2 :(得分:0)

如果您使TabLayoutPanel大于根面板,您将获得一个浏览器滚动条。

答案 3 :(得分:-1)

如果我想实现这样的目标,我总是将TabLayoutPanel放在SimplePanel中并将SimplePanel添加到RootPanel。我想这不是最好的方法,但它确实有用。

public void onModuleLoad() {
   //Create TabPanel
   TabPanel tp = new TabPanel();
   tp.add(new HTML("Foo"), "foo");
   tp.add(new HTML("Bar"), "bar");
   tp.add(new HTML("Baz"), "baz");
   tp.selectTab(1);
   // Create SimplePanel and add TabPanel
   SimplePanel sp =new SimplePanel();
   sp.add(tp);
   // Add SimplePanel to the root panel.
   RootPanel.get().add(sp);
}