2012-03-21 45 views
2

我是GWT的新手。GWT中的tabPanel上的監聽器

我用GWT設計器設計了Gui。 我的圖形用戶界面我有tabPanel 4個選項卡。

private TabPanel getWorkplacePanel() { 
    if (WorkplacePanel == null) { 
     WorkplacePanel = new TabPanel(); 

     WorkplacePanel.setStyleName("Workpalce-MyWorkPlace"); 
     WorkplacePanel.add(getMyWorkPlacePanel(), "My Workplace", false); 

     WorkplacePanel.add(getBrowsePanel(), "Browse", false); 
     WorkplacePanel.add(getSearchPanel(), "Search", false); 
     WorkplacePanel.add(getTaskPanel(), "Tasks", false); 
     WorkplacePanel.setSize("1450px", "750px"); 

    } 
    return WorkplacePanel; 
} 

在每個標籤中我都有複合小部件。對於瀏覽選項卡上的例子,我有2個複合樹ans表。

我想點擊其上調用RPC.i知道RPC調用tabBrowse

但是如何非常特殊的標籤上添加點擊監聽器爲每個選項卡中調用不同的RPC。

回答

5

GWT中的TabPanel實現了HasSelectionHandlersHasBeforeSelectionHandlers。所以你需要添加一個選擇處理程序到你的TabPanel。在OnSelection方法中,您可以確定使用Widget的索引選擇了哪個Tab項(即Widget)。然後,您可以做一個類型檢查,或者使用一些自定義的類型標識符(如果需要),以找出哪些選項卡項目已被選擇(例如瀏覽,搜索等):

WorkplacePanel.addSelectionHandler(new SelectionHandler<Integer>(){ 
    public void onSelection(SelectionEvent<Integer> event){ 
    int tabId = event.getSelectedItem(); 
    Widget tabWidget = tabpanel.getWidget(tabId); 
} 
}); 

上面的代碼是從This thread這可能會進一步幫助你。

0

請注意,使用HasBeforeSelectionHandlers,您可以取消BeforeSelectionEvent。它可以讓你做任何你想做的事情,當你想要切換標籤頁時,自己調用SelectionEvent。