2013-05-17 41 views
2

我试图使用TabLayoutPanel它似乎工作正常,当它是我在页面上放置的第一件事,但当我按下按钮后(例如)它执行它没有正确显示。例如,如果我这样做,它工作正常:TabLayoutPanel选项卡按钮单击后不显示

TabLayoutPanel tlp = new TabLayoutPanel(2.5, Style.Unit.EM); 

tlp.add(new HTML("Tab1"), "Tab 1 title"); 
tlp.add(new HTML("Tab2"), "Tab 2 title"); 
tlp.add(new HTML("Tab3"), "Tab 3 title"); 
tlp.setPixelSize(500, 400); 

RootLayoutPanel.get().add(tlp); 

但是,如果我这样做以下,当我点击按钮,我看到的显示是“TAB1”,没有其他标签,没有“标签1标题“等:

HorizontalPanel hp = new HorizontalPanel(); 
Button btn = new Button("push"); 
TabLayoutPanel tlp = new TabLayoutPanel(2.5, Style.Unit.EM); 

hp.add(btn); 
tlp.add(new HTML("Tab1"), "Tab 1 title"); 
tlp.add(new HTML("Tab2"), "Tab 2 title"); 
tlp.add(new HTML("Tab3"), "Tab 3 title"); 
tlp.setPixelSize(500, 400); 

RootLayoutPanel.get().add(tlp); 

btn.addClickHandler(new ClickHandler() { 
    public void onClick(ClickEvent event) { 

     RootLayoutPanel.get().remove(hp); 
     RootLayoutPanel.get().add(tlp); 
    } 
}); 

任何想法?我在某处读到IE8中存在TabLayoutPanel问题,但是由于它在第一种情况下显示正常,我怀疑这是问题所在。我想知道Chrome和Firefox会发生什么,但花了几个小时努力在这些浏览器上安装GWT Developer Plugin,但没有任何运气。

我想要做的事情有什么内在的错误吗?有人看到我的代码有问题吗?任何人都可以建议如何调试?

+0

我最终使用了一个TabPanel来代替,并解决了我的问题。我仍然不确定为什么TabLayoutPanel不起作用。 – mgcl

回答

0

你的第二个问题,落实解决办法是以下几点:

final HorizontalPanel hp = new HorizontalPanel(); 
    Button btn = new Button("push"); 
    final TabLayoutPanel tlp = new TabLayoutPanel(2.5,Style.Unit.EM); 

    hp.add(btn); 
    tlp.add(new HTML("Tab1"), "Tab 1 title"); 
    tlp.add(new HTML("Tab2"), "Tab 2 title"); 
    tlp.add(new HTML("Tab3"), "Tab 3 title"); 
    tlp.setPixelSize(500, 400); 

    RootLayoutPanel.get().add(hp); 

    btn.addClickHandler(new ClickHandler(){ 

     @Override 
     public void onClick(ClickEvent event) { 

      RootLayoutPanel.get().remove(hp); 
      RootLayoutPanel.get().add(tlp);    
     } 

    }); 

你的错误是在你从RootLayoutPanel安装/拆卸的小部件/顺序。

+0

在Chrome 33.0,Firefox 24.0上测试 – plopd