我想通過gwt事件總線發送一個對象,我不知道爲什麼它不起作用。GWT事件:我錯過了什麼?
通常,我有一個組件A創建一個彈出窗口。 A註冊到彈出窗口,彈出窗口觸發事件。 現在,偵聽器(OtherComponent)與彈出窗口無關。當彈出窗口觸發事件時,另一個組件不會捕獲它。
這裏是我的代碼:
處理程序:
public interface MyEventHandler extends EventHandler {
public void onChanged(MyEvent event);
}
事件:
public class MyEvent extends GwtEvent<MyEventHandler> {
private static final GwtEvent.Type<MyEventHandler> TYPE = new GwtEvent.Type<MyHandler>();
private MyBean my;
public MaterielEvent(My bean) {
my = bean;
}
@Override
public com.google.gwt.event.shared.GwtEvent.Type<MyEventHandler> getAssociatedType() {
return TYPE;
}
public static Type<MyEventHandler> getType() {
return TYPE;
}
@Override
protected void dispatch(MyEventHandler handler) {
handler.onChanged(this);
}
public MyBean getBean() {
return my;
}
}
組件:
public class OtherPanel extends Composite implements HasMyEventHandlers {
interface OtherPanelUiBinder extends UiBinder<Widget, OtherPanel> {}
private static OtherPanelUiBinder uiBinder = GWT.create(OtherPanelUiBinder.class);
public OtherPanel() {
this.addMyEventHandler(new MyEventHandler() {
@Override
public void onChanged(MyEvent event) {
NotificationManager.success("event recieved");
}
});
initWidget(uiBinder.createAndBindUi(this));
}
@Override
public HandlerRegistration addMyEventHandler(MyEventHandler handler) {
return addHandler(handler, MyEvent.getType());
}
}
調用(內另一個組件):
fireEvent(new MyEvent(myBean));
通知「收到的事件」從不會被調用。
我肯定錯過了一些東西。感謝您的幫助
你能告訴周圍的fireEvent調用更多的代碼?你調用一個靜態嗎?如果沒有,哪兒來的eventBus來自於你調用'fireEvent()'? – 2012-04-11 15:43:58