2012-03-21 53 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。