内部TabLayoutPanel内容不可见

时间:2010-10-28 09:19:56

标签: gwt2 gwt-tablayoutpanel

全部, 我想要一个位于我的主ScrollPanel内的选项卡菜单窗格。每当用户从我的主页面单击菜单选项时,中心ScrollPanel就会删除之前的所有widgit并添加一个新的。

到目前为止,它的工作正常,直到我引入了一个TabLayoutPanel。正如你猜测的那样,TabLayout只显示选项卡,而不是没有大小的内容,是的,我希望它在100%的宽度和高度。

我已经在整个interweb中看到了这个,并且解决方案是将它附加到RoolLayoutPanel,因为TabLayoutPanel被设置为绝对但是这对我不起作用,因为我不想将它附加到根布局而不是这个内部客户区/ ScrollPanel。

我想要的只是一个标签式系统,所以如果TabLayoutPanel不是最好的选择,那么有人推荐另一个吗?我处于标准模式,因为我认为我应该针对此进行构建以获得更好的浏览器兼容性。

这是我的页面结构:

RootLayoutPanel rootPanel = RootLayoutPanel.get();
rootPanel.setSize("940px", "940px");

mainpanel = new FlowPanel();
mainpanel.setSize("100%", "100%");
rootPanel.add(mainpanel);

header = new FlowPanel();
mainpanel.add(header);

ScrollPanel mainbody = new ScrollPanel();
mainpanel.add(mainbody);

footer = new FlowPanel();
mainpanel.add(footer);

每当我想改变主人的内容时,我都会打电话:

mainbody.clear()
mainbody.add(..)

任何帮助将不胜感激,谢谢

2 个答案:

答案 0 :(得分:0)

我不确定自己能得到什么。但是如何使用DeckLayoutPanel? DeckLayoutPanel拥有一个带有多个小部件的“套牌”,并且一次显示其中一个小部件。转换时甚至可以有滑动动画。

http://google-web-toolkit.googlecode.com/svn/javadoc/2.3/com/google/gwt/user/client/ui/DeckLayoutPanel.html

答案 1 :(得分:0)

我的解决方案:

  1. 使用RootLayoutPanel代替RootPanel

    public void onModuleLoad() {
        binwebtabs bwt = new binwebtabs();
        //RootPanel.get("mainpage").add(bwt);
    
        RootLayoutPanel rp = RootLayoutPanel.get();
        rp.add(bwt);
    }
    
  2. 在uibinder XML的根目录中使用g:LayoutPanel,然后您可以在单独的g:TabLayoutPanel下添加任何小部件(例如标签)和g:layer

    <g:LayoutPanel>
    <g:layer>
      <g:Label>Bin Web </g:Label>
    </g:layer>
    <g:layer>
    <g:TabLayoutPanel ui:field="tabLayoutPanel" barUnit="PX" barHeight="60">
    ... 
    </g:TabLayoutPanel>
    
  3. 这样,g:TabLayoutPanel内容可见,g:TabLayoutPanel不必在根目录。