2011-02-25 10 views
8

¿Cómo puedo desactivar una pestaña (es decir, el usuario no puede abrir la pestaña cuando se hace clic en él) en el TabLayoutPanel? Busqué en línea, pero no era capaz de encontrar una soluciónTabLayoutPanel desactivar una pestaña GWT

Gracias

Respuesta

10

utilice un 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(); 
    } 
    } 
}); 

Si quieres estilo de la pestaña desactivada de manera diferente que las pestañas habilitadas, puede utilizar TabLayoutPanel#getTabWidget para obtener el widget ficha y agregar un nombre de estilo a la misma.

+0

¿Cómo se activa de nuevo otra vez? – Barry

+0

Solo llame a event.cancel() en BeforeSelectionHandler cuando desee deshabilitar la pestaña. –

+0

el requisito que tengo es que necesito la pestaña para desactivar cuando la página que tiene la pestaña se carga por primera vez.Pero cuando algo sucede, tengo que habilitar la pestaña de nuevo.¿Cómo puedo lograr esto? – Barry

2

Para cualquier persona que viene a través de esta tarde:

A partir de la versión 1.6 de GWT, la desactivación/pestañas que permiten está integrado en GWT. La clase TabBar tiene un método setTabEnabled(int index, boolean enabled) que habilita/deshabilita la pestaña en un índice dado.

Por ejemplo, para desactivar todas las pestañas en un TabPanel:

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

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

Véase el GWT javadoc para obtener más información.

Para cambiar el estilo de las pestañas desactivadas de forma diferente (lo que hace GWT automáticamente, pero si desea cambiar el estilo): deshabilitado tabBarItem divs tienen otra clase de CSS: gwt-TabBarItem-disabled.

+1

La pregunta era sobre el tipo 'TabLayoutPanel', no' TabBar'. –

+0

@JasonTerk ¡El 'TabLayoutPanel' contiene un' TabBar'! Esa es la parte en la parte superior del 'TabLayoutPanel' que contiene las pestañas. Puede acceder al 'TabBar' de un' TabLayoutPanel' utilizando 'myTabLayoutPanel.getTabBar()' (vea mi respuesta). He actualizado mi respuesta para que quede más claro. –

+0

No hay un método 'getTabBar' en [' TabLayoutPanel'] (http://google-web-toolkit.googlecode.com/svn/javadoc/2.4/com/google/gwt/user/client/ui/TabLayoutPanel. html) tipo. ¿Quizás te refieres a ['TabPanel'] (http://google-web-toolkit.googlecode.com/svn/javadoc/2.4/com/google/gwt/user/client/ui/TabPanel.html)? –

0

Puede acceder estilo pestaña por clase de fundición a TabWidget

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