【问题标题】:GWT UiBinders Interaction between modulesGWT UiBinders 模块之间的交互
【发布时间】:2023-08-14 04:09:01
【问题描述】:

我是 GWT 新手,我希望这应该是一个简单的问题。

想象一下,我制作了两个 Uibinders 模块或两个独立的小部件。(这是一个暴露我的问题的简化示例)

一个是一组按钮 (ButtonPanel),另一个是当我按下前一个面板 (ImagePAnel) 中的按钮时显示的另一个图像,其标签是图像的标题。

当从 (ButtonPanel) 中的按钮点击处理程序时,我如何到达 wiget imagePanel 以启动

感谢您的帮助。

【问题讨论】:

    标签: gwt uibinder interaction


    【解决方案1】:

    我建议您使用 MVP Pattern for Development 并在 Presenter 中添加所有事件。

    否则,您可以在 UIBinder 的 Java 文件中使用以下技术

    @UiHandler(value={"openButton"})
    public void onOpenButtonClick(ClickEvent clickEvent){
          //ADD THE BUTTON LOGIC HERE
    }
    

    只需创建一个图像对象和要加载的 ImagePanel 并使用此按钮在单击按钮时添加它。

    【讨论】:

      【解决方案2】:

      我不能说我完全理解您想要完成的工作,但一般来说,GUI 应用程序中不同组件进行通信的最佳方式是使用事件总线模式。应用程序中有一个全局 Eventbus 对象,它允许组件订阅从应用程序的任何位置触发的指定类型的事件。这样可以避免意大利面条式代码,并且您的组件是松散耦合的。

      http://code.google.com/webtoolkit/articles/mvp-architecture.html#events

      【讨论】:

        【解决方案3】:

        我通常会创建第三个组件,它是您定义的 Button 和 Image 组件的容器。该组件将自身设置为两者的回调,并包含整合两者的逻辑。

        【讨论】: