2011-02-25 18 views
8

devre dışı bırakma (yani o tıkladığında sekme açamıyorum kullanıcı) TabLayoutPanel I çevrimiçi arama ama bir çözümüTabLayoutPanel bir Sekme GWT

Teşekkür

bulmak mümkün değildi?

cevap

10

kullanın BeforeSelectionHandler: Gmail'de sekmelerin farklı engelli sekmeyi stil vermek istersek, sekme widget'ı almak için TabLayoutPanel#getTabWidget kullanmak ve buna bir stil adı ekleyebilir

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

. Bunu daha sonra karşıdan karşıya gelir herkes için

+0

için döküm sınıfının Tab tarafından sekme stilini erişebilir? – Barry

+0

Yalnızca sekmenin devre dışı bırakılmasını istediğinizde BeforeSelectionHandler'da event.cancel() öğesini çağırın. –

+0

Ihtiyacım olan şey, sekme olan sayfa ilk kez yüklendiğinde devre dışı bırakmak için sekmeye ihtiyacım var.Ama bir şey olduğunda, sekmeyi tekrar etkinleştirmem gerekiyor.Nasıl bunu başarabilirim? – Barry

2

: GWT 1.6 sürümünden beri

, etkinleştirme/devre dışı bırakma sekmeleri GWT yerleşiktir. TabBar sınıfı, belirli bir dizindeki sekmeyi etkinleştiren/devre dışı bırakan setTabEnabled(int index, boolean enabled) yöntemine sahiptir.

Örneğin bir TabPanel tüm sekmelerin devre dışı bırakmak için:

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

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

fazla bilgi için GWT javadoc bakınız.

Devre dışı bırakılmış sekmeleri farklı şekilde biçimlendirmek için (hangi GWT otomatik olarak yapılır, ancak stili değiştirmek isterseniz): devre dışı bırakılmış tabBarItem div'ler başka bir CSS sınıfı verilir: gwt-TabBarItem-disabled.

+1

Soru, 'TabBar' değil 'TabLayoutPanel 'türüyle ilgiliydi. –

+0

@JasonTerk 'TabLayoutPanel' bir' TabBar' içeriyor! Sekmeleri tutan 'TabLayoutPanel' nin en üstündeki kısım budur. 'MyTabLayoutPanel.getTabBar()' kullanarak '' tabLayoutPanel' 'tabBar''na erişebilirsiniz (cevabıma bakın). Bunu daha açık hale getirmek için cevabımı güncelledim. –

+0

['TabLayoutPanel'] öğesinde" getTabBar "yöntemi yok (http://google-web-toolkit.googlecode.com/svn/javadoc/2.4/com/google/gwt/user/client/ui/TabLayoutPanel. html) türü. Belki de ['TabPanel'] kastediyorsunuz (http://google-web-toolkit.googlecode.com/svn/javadoc/2.4/com/google/gwt/user/client/ui/TabPanel.html)? –

0

Sen nasıl geri tekrar etkinleştirebilirim Widget

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