题
GWT 中的小部件应如何通知其他小部件刷新自身或执行其他操作。
我应该使用sinkEvent / onBrowserEvent吗?如果是这样,有没有办法创建自定义事件?
其他提示
这是一个非常开放式的问题 - 例如,您可以创建自己的静态事件处理程序类,小部件可以订阅该类。例如:
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 - 但您可以根据需要将其设置得更漂亮。
因此,这是我的(示例)实现,首先让我们创建一个新事件:
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);
}
如果我们现在有一个实现NotificationHanlder的小部件,我们可以通过致电以下方式触发事件:
((NotificationHandler)widget).onNotification(event);
不隶属于 StackOverflow