gpt4 book ai didi

java - 如何在 GWT 中使用非静态方法@Using window.addEventListener ('message' ~

转载 作者:太空宇宙 更新时间:2023-11-04 08:44:26 25 4
gpt4 key购买 nike

我是蒂努埃,我想在 JSNI 方法中编写这些内容,以便在 GWT 中使用“消息”。

private native void setUp(JavaScriptObject method) /*-{
window.addEventListener('message', method, false);
}-*/;

我的希望是在收到消息时调用某些方法。尤其是在 JSNI 之外编写的方法。

所有代码:

public void setUpMessaging () {
setUp(get());
}

private native JavaScriptObject get () /*-{
return this.@somePackage::mtd(Lcom/google/gwt/user/client/Event;);
}-*/;

public static void mtd (Event e) {
//some description,,,
}

private native void setUp (JavaScriptObject method) /*-{
window.addEventListener('message', method, false);
}-*/;

但是现在,如果没有“static”,“mtd”方法就永远无法工作。这很正常,我当然知道。

但我不想在这里使用“静态”。

有人知道一些解决方案吗?

问候。

最佳答案

如果您想在 GWT 中实现消息传递应用程序,您可能需要看看 comet,而不是重新发明轮子。有关 GWT/comet 的一些起点,请参阅此 stackoverflow 答案:GWT / Comet: any experience?

编辑:要创建自定义事件,只需采用现有的 GWT 事件(例如 PlaceChangeEvent)即可。我们假设该事件称为 MessageEvent:

// (copy from PlaceChangeEvent)
public class MessageEvent extends GwtEvent<MessageEvent.Handler>

public interface Handler extends EventHandler {
void onMessage(MessageEvent event);
}
//... rest like PlaceChangeEvent, but with PlaceChange replaced with Message
// and instead of Place or use String message or a more advanced Message you create,
// which contains the message data.
}

现在,对于需要对此事件执行操作的所有类,通过全局事件总线实例注册它们:

  //where this implements the MessageEvent.Handler interface
myglobaleventbus.addHandler(MessageEvent.TYPE, this);

并发送消息触发事件:

  myglobaleventbus.fire(new MessageEvent(message));

关于java - 如何在 GWT 中使用非静态方法@Using window.addEventListener ('message' ~,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4612819/

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