gpt4 book ai didi

java - 如何在 Composite 扩展类中获取 EventBus 实例?

转载 作者:行者123 更新时间:2023-11-30 02:51:54 24 4
gpt4 key购买 nike

如何获取com.google.web.bindery.event.shared.EventBus实例位于 com.google.gwt.user.client.ui.Composite扩展类?;

我读过:How to use EventBus for non-Presenter class in GWTP? ,但我正在寻找类似的答案:

GWT 开发的最佳方法

我有一个小部件,我想触发一个事件 IndicatorEvent 。但在这个小部件中,我没有该事件的处理程序。

处理程序位于其他类中。因此,要启动它,我将使用:

fireEvent(new IndicatorEvent("Custom Widget Message"));

方法fireEvent可在 com.google.web.bindery.event.shared;EventBus 中找到

public abstract void fireEvent(Event<?> event);

所以我需要一个 EventBus 的实例在扩展 Composite 的 View 类中。这个 View 没有 MVP 的东西(presenters、uihandlers 等),它只是一个简单的类元素/小部件。

我应该采取什么方法?

  • 我应该将其转换为 Presenter/View一对? (在 gwtp Presenters 中是来自 PresenterWidget 类的 EventBus 引用)然后使用 ui 处理程序,将执行从 View 委托(delegate)给 Presenter?
  • 我应该inject EventBus 的实例进入小部件类?

请帮忙。

最佳答案

任何 Widget 都可以在不使用 EventBus 的情况下触发事件。

如果您知道此事件的接收者,则只需将处理程序直接附加到接收者即可。为此,您可以在复合小部件中定义此方法:

public HandlerRegistration addIndicatorEventHandler(IndicatorEventHandler handler) {
return addHandler(handler, IndicatorEvent.TYPE);
}

然后在您的其他小部件(收件人)中:

myCustomWidget.addIndicatorEventHandler(new IndicatorEventHandler() {

@Override
public void onIndicator(IndicatorEvent event) {
// do something
}

});

如果 (a) 两个小部件(触发事件和事件接收者)之间没有直接/简单的链接,(b) 有许多接收者,和/或 (c) 您不希望使用 EventBus,则需要使用 EventBus在包含事件触发小部件和事件接收者的代码部分之间创建依赖关系。

关于java - 如何在 Composite 扩展类中获取 EventBus 实例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38397669/

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