Gwt 小部件通知其他小部件

Gwt 小部件通知其他小部件,gwt,Gwt,GWT中的小部件应该如何通知其他小部件刷新自己或执行其他操作 我应该使用sinkEvent/onBrowserEvent吗? 如果是这样的话,有没有一种方法可以创建自定义事件?这是一个非常开放的问题-例如,您可以创建自己的静态事件处理程序类,小部件可以订阅这些类。e、 g: Class newMessageHandler { void update(Widget caller, Widget subscriber) { ... } } customEventHa

GWT中的小部件应该如何通知其他小部件刷新自己或执行其他操作

我应该使用sinkEvent/onBrowserEvent吗?
如果是这样的话,有没有一种方法可以创建自定义事件?

这是一个非常开放的问题-例如,您可以创建自己的静态事件处理程序类,小部件可以订阅这些类。e、 g:

Class newMessageHandler {
    void update(Widget caller, Widget subscriber) {
        ...
    }
}

customEventHandler.addEventType("New Message", newMessageHandler);

Widget w;
customEventHandler.subscribe(w, "New Message");

...
Widget caller;

// Fire "New Message" event for all widgets which have
// subscribed
customEventHandler.fireEvent(caller, "New Message");

其中customEventHandler跟踪订阅每个命名事件的所有小部件,并调用命名类上的update方法,然后该类可以调用您想要的任何其他方法。您可能想在析构函数中调用unsubscribe,但您可以随心所欲地调用它。

这是一个非常开放的问题,例如,您可以创建自己的静态事件处理程序类,小部件可以订阅这些类。e、 g:

Class newMessageHandler {
    void update(Widget caller, Widget subscriber) {
        ...
    }
}

customEventHandler.addEventType("New Message", newMessageHandler);

Widget w;
customEventHandler.subscribe(w, "New Message");

...
Widget caller;

// Fire "New Message" event for all widgets which have
// subscribed
customEventHandler.fireEvent(caller, "New Message");

其中customEventHandler跟踪订阅每个命名事件的所有小部件,并调用命名类上的update方法,然后该类可以调用您想要的任何其他方法。您可能想在析构函数中调用unsubscribe,但您可以随心所欲地调用它。

我已使用和中央处理器解决了此问题。中央控制器是唯一一个了解应用程序中所有小部件的类,它决定了这些小部件的组合方式。如果有人在小部件A上更改了某些内容,小部件A将触发一个事件。在eventhandler中,您通过'notifyObservators()'调用调用中央控制器,该调用通知中央控制器(以及其他可选的控制器,但为简单起见,我不在此赘述)某个操作(传递'MyEvent'枚举实例)已发生


这样,应用程序流逻辑就包含在一个中心类中,小部件之间不需要大量的引用

我已经使用和中央处理器解决了这个问题。中央控制器是唯一一个了解应用程序中所有小部件的类,它决定了这些小部件的组合方式。如果有人在小部件A上更改了某些内容,小部件A将触发一个事件。在eventhandler中,您通过'notifyObservators()'调用调用中央控制器,该调用通知中央控制器(以及其他可选的控制器,但为简单起见,我不在此赘述)某个操作(传递'MyEvent'枚举实例)已发生

这样,应用程序流逻辑就包含在一个中心类中,小部件之间不需要大量的引用

下面是我的(示例)实现, 首先,让我们创建一个新事件:

import java.util.EventObject;
import com.google.gwt.user.client.ui.Widget;

public class NotificationEvent extends EventObject {
    public NotificationEvent(String data) {
        super(data);
    }
}
然后我们创建一个事件处理程序接口:

import com.google.gwt.user.client.EventListener;

public interface NotificationHandler extends EventListener {
    void onNotification(NotificationEvent event);
}
如果我们现在有一个小部件实现NotificationHander,我们可以 通过调用以下命令触发事件:

((NotificationHandler)widget).onNotification(event);
这是我的(示例)实现, 首先,让我们创建一个新事件:

import java.util.EventObject;
import com.google.gwt.user.client.ui.Widget;

public class NotificationEvent extends EventObject {
    public NotificationEvent(String data) {
        super(data);
    }
}
然后我们创建一个事件处理程序接口:

import com.google.gwt.user.client.EventListener;

public interface NotificationHandler extends EventListener {
    void onNotification(NotificationEvent event);
}
如果我们现在有一个小部件实现NotificationHander,我们可以 通过调用以下命令触发事件:

((NotificationHandler)widget).onNotification(event);

这可能符合我的想法,一定会尝试一下。这可能符合我的想法,一定会尝试一下。你得出的解决方案和我一样。首先尝试sendNotification,ReceivenNotification机制将变得非常复杂。观察者模式完美契合,中央控制器更有意义。你的解决方案和我的一样。首先尝试sendNotification,ReceivenNotification机制将变得非常复杂。观察者模式完美契合,中央控制器更有意义。