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 跟踪订阅每个命名事件的所有小部件,并调用命名类的更新方法,然后可以调用您想要的任何其他方法。你可能想在析构函数中调用 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);