TabLayoutPanel禁用Tab GWT

时间:2011-02-25 21:59:51

标签: gwt gwt-tablayoutpanel

如何在TabLayoutPanel中禁用选项卡(即用户无法在单击时打开选项卡)?我在线搜索但无法找到解决方案

由于

3 个答案:

答案 0 :(得分:10)

使用BeforeSelectionHandler

TabLayoutPanel myPanel = new TabLayoutPanel();
// Add children...

myPanel.addBeforeSelectionHandler(new BeforeSelectionHandler<Integer>() {
  @Override
  public void onBeforeSelection(BeforeSelectionEvent<Integer> event) {
    // Simple if statement - your test for whether the tab should be disabled
    // will probably be more complicated
    if (event.getItem() == 1) {
      // Canceling the event prevents the tab from being selected.
      event.cancel();
    }
  }
});

如果要为禁用选项卡设置与启用选项卡不同的样式,可以使用TabLayoutPanel#getTabWidget获取选项卡窗口小部件并为其添加样式名称。

答案 1 :(得分:2)

对于后来遇到此问题的人:

从GWT版本1.6开始,GWT内置了禁用/启用选项卡。 TabBar类有一个方法setTabEnabled(int index, boolean enabled),可以在给定索引处启用/禁用选项卡。

例如,要禁用TabPanel中的所有选项卡:

TabPanel myTabPanel = new TabPanel();
// Add children

TabBar tabBar = myTabPanel.getTabBar();
for(int i=0; i<tabBar.getTabCount(); i++) {
    tabBar.setTabEnabled(i, false);
}

有关详细信息,请参阅GWT javadoc

以不同的方式设置已禁用的选项卡(GWT会自动设置,但如果您想更改样式):已禁用tabBarItem div的另一个CSS类:gwt-TabBarItem-disabled

答案 2 :(得分:0)

您可以通过将课程Tab投射到Widget

来访问标签样式
TabPanel tabPanel = new TabPanel();
((Widget)tabPanel().getTabBar().getTab(tabsToDisable.iterator().next())).addStyleName("disabled");