gpt4 book ai didi

gwt - 您如何使用 GWT 的 SimpleEventBus 或 EventBus?

转载 作者:行者123 更新时间:2023-12-04 21:25:20 27 4
gpt4 key购买 nike

我正在开发一些需要在swing 和gwt 中实现的简单图形软件。在 gwt 方面,我将使用 gwt-g2d 作为 Canvas 。我希望在两种实现中都使用 eventbus 来简化一些软件。

我的理解是它应该是这样的:

  • 实例化 EventBus
  • 实例化 Parent Widget,为 EventBus 接收您想要的事件(例如鼠标悬停或 rpc 回调)
  • 设置 EventBus 以监听来自 Parent Widget 的事件。
  • 实例化子小部件,谁应该向 EventBus 注册它拥有的监听器(他们是否需要注册可能触发的事件?)
  • 当 EventBus 接收到事件时,它应该对事件做出决定,然后根据该决定采取行动,无论这意味着忽略它、更改事件类型,还是仅将其转发给所有适用的子小部件。

  • 这通常应该如何工作? SimpleEventBus 仍然有点新,我在网上找不到太多关于如何真正使用它的信息。

    最佳答案

    SimpleEventBus 提供了非常基本的功能,即存储一组处理程序,并在适当的时候使用所有相关的处理程序调用 event.dispatch()。我不会说您从父小部件“设置 EventBus 以监听事件”。 SimpleEventBus 没有“父级”的概念。相反,您传递对 SimpleEventBus 的引用。然后,任何对象都可以使用 SimpleEventBus.fireEvent 方法“触发事件”。没有等级制度。

    类似地,任何对象都可以使用 SimpleEventBus.addHandler() 监听这些事件。这与您的 #4 最接近 - addHandler 接受一种事件类型和一个处理程序,因此无论何时将该类型的事件传递给 fireEvent (通过您的应用程序中的某些内容),该处理程序将传递给事件。请注意 Event是调用处理程序,而不是 EventBus! EventBus 只是调用event.dispatch(theHandler),事件的程序员负责在Handler 中调用适当的函数。您的 #5 是不准确的,至少对于 SimpleEventBus - SimpleEventBus 根本不检查事件,除了查看要调用的处理程序。它不知道任何子小部件或任何应用程序逻辑,并且永远不会更改事件的类型。

    您关于查看选择哪个区域的逻辑在 EventBus 中不合适 - 相反,您将创建一个处理程序来执行逻辑并监听 ClickEvents。然后,该处理程序可以直接告诉所选区域它已被选择,或者您可以创建自己的 RegionSelectionEvent,您可以沿着 EventBus 触发该事件,然后所有区域都可以被告知发生了 RegionSelection,并且您的记录器可以获得一个通知,或者你的服务器监视器可以得到通知并通知老板有人选择了一个地区,或者其他什么。如果您只需要取消选择一个区域并选择另一个区域,那么 eventbus 就有点过分了。

    另一方面,诸如“调整大小”事件之类的事情很有意义,因为您的所有小部件可能都需要了解它。

    关于gwt - 您如何使用 GWT 的 SimpleEventBus 或 EventBus?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4259424/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com