GWT中tabPanel上的监听器

时间:2012-03-21 10:49:45

标签: java gwt gwt2 gwt-tablayoutpanel

我是GWT的新手。

我使用GWT设计师设计了Gui。 我的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个复合树和表。

我想点击调用RPC.i知道RPC调用的tabBrowse

但是如何在非常特殊的选项卡上添加单击侦听器,因为每个Tab都调用不同的RPC。

2 个答案:

答案 0 :(得分:5)

GWT中的TabPanel实现 HasSelectionHandlers HasBeforeSelectionHandlers 。因此,您需要向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,可能对您有所帮助。

答案 1 :(得分:0)

请注意,使用HasBeforeSelectionHandlers,您可以取消BeforeSelectionEvent。它可以让你做任何你想做的事情,并在你切换标签时自称为SelectionEvent。