2011-02-25 86 views
8

如何禁用選項卡(即用戶,當他點擊它無法打開選項卡)在TabLayoutPanel?我在網上搜索,但沒有能夠找到一個解決方案TabLayoutPanel禁用標籤GWT

感謝

回答

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獲得標籤控件,並添加一個樣式名稱給它。

+0

我如何再次啓用它? – Barry 2011-02-28 20:56:28

+0

當您希望禁用選項卡時,只需在BeforeSelectionHandler中調用event.cancel()。 – 2011-02-28 21:07:28

+0

我的要求是,我需要該選項卡禁用時,該頁面有選項卡加載第一次。但是當發生什麼事情時,我需要再次啓用該選項卡。如何實現這一目標? – Barry 2011-02-28 21:16:43

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會自動執行,但如果您想更改樣式):disabled tabBarItem div會被賦予另一個CSS類:gwt-TabBarItem-disabled

+1

問題是關於'TabLayoutPanel'類型,而不是'TabBar'。 – 2012-02-03 19:04:22

+0

@JasonTerk TabLayoutPanel包含一個TabBar!這是TabLayoutPanel頂部包含選項卡的部分。你可以使用myTabLayoutPanel.getTabBar()來訪問TabLayoutPanel的TabBar(見我的回答)。我已經更新了我的答案,以使其更清楚。 – 2012-02-04 17:22:44

+0

['TabLayoutPanel']上沒有'getTabBar'方法(http://google-web-toolkit.googlecode.com/svn/javadoc/2.4/com/google/gwt/user/client/ui/TabLayoutPanel。 html)類型。也許你的意思是[TabPanel](http://google-web-toolkit.googlecode.com/svn/javadoc/2.4/com/google/gwt/user/client/ui/TabPanel.html)? – 2012-02-05 02:58:18

0

您可以通過鑄造一流Tab標籤訪問的風格Widget

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