TabLayoutPanel отключить вкладку GWT - PullRequest
8 голосов
/ 26 февраля 2011

Как я могу отключить вкладку (т. Е. Пользователь не может открыть вкладку, когда он нажимает на нее) в панели TabLayout? Я искал в Интернете, но не смог найти решение

Спасибо

Ответы [ 3 ]

10 голосов
/ 26 февраля 2011

Используйте 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 дляполучить виджет вкладки и добавить к нему имя стиля.

2 голосов
/ 01 февраля 2012

Для тех, кто сталкивается с этим позже:

Начиная с 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.

0 голосов
/ 18 сентября 2012

Вы можете получить доступ к стилю табуляции, переведя класс Tab в Widget

TabPanel tabPanel = new TabPanel();
((Widget)tabPanel().getTabBar().getTab(tabsToDisable.iterator().next())).addStyleName("disabled");
...