8

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

谢谢

4

3 回答 3

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获取选项卡小部件并为其添加样式名称。

于 2011-02-25T22:12:33.333 回答
3

对于以后遇到此问题的任何人:

从 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 会自动执行此操作,但如果您想更改样式):禁用的tabBarItemdiv 被赋予另一个 CSS 类:gwt-TabBarItem-disabled.

于 2012-02-01T15:00:36.860 回答
0

Tab您可以通过将类转换为来访问选项卡样式Widget

TabPanel tabPanel = new TabPanel();
((Widget)tabPanel().getTabBar().getTab(tabsToDisable.iterator().next())).addStyleName("disabled");
于 2012-09-18T09:08:41.007 回答