2

我是 GWT 的新手。

我使用 GWT 设计器设计了 Gui。我的 GUI 我有tabPanel4 个选项卡。

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 的 tabBrowse。我知道 RPC 调用

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

4

2 回答 2

5

GWT 中的 TabPanel 实现了 HasSelectionHandlersHasBeforeSelectionHandlers。因此,您需要将选择处理程序添加到您的 TabPanel。然后,在OnSelection方法中,您可以使用 Widget 的索引确定哪个选项卡项(即 Widget)已被选中。然后,您可以进行类型检查或使用一些自定义类型标识符(如果需要)来确定选择了哪个选项卡项(例如浏览、搜索等):

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

上面的代码来自这个线程,它可能会进一步帮助你。

于 2012-03-21T11:24:25.317 回答
0

请注意,使用 HasBeforeSelectionHandlers,您可以取消 BeforeSelectionEvent。当您想要切换选项卡时,它可以让您做任何您想做的事情并称自己为 SelectionEvent。

于 2012-06-15T22:01:07.497 回答