Ich möchte ein Kind-Widget ein Ereignis und seine Eltern auslösen, um darauf zu reagieren. Soweit ich das verstehe, ist Widget.fireEvent
für. Aber der folgende Code nicht funktioniert:Wie verwende ich GWT Widget.fireEvent?
public class EntryPointClass implements EntryPoint {
private final HorizontalPanel horizontalPanel = new HorizontalPanel();
public void onModuleLoad() {
VerticalPanel verticalPanel = new VerticalPanel();
verticalPanel.add(horizontalPanel);
horizontalPanel.setHeight("500px");
horizontalPanel.setWidth("500px");
horizontalPanel.addDomHandler(new ClickHandler() {
@Override
public void onClick(ClickEvent clickEvent) {
log("onClick");
horizontalPanel.fireEvent(new ChangeEvent() {
});
}
}, ClickEvent.getType());
verticalPanel.addDomHandler(new ChangeHandler() {
@Override
public void onChange(ChangeEvent changeEvent) {
log("onChange");
}
}, ChangeEvent.getType());
RootPanel.get().add(verticalPanel);
}
private static native void log(String msg) /*-{
$wnd.console.log(msg);
}-*/;
}
onClick
wird gedruckt, aber onChange
nicht. Was mache ich falsch? Oder bekomme ich den Zweck von Widget.fireEvent
falsch?
Ich denke, Sie sollten EventBus in Betracht ziehen. Es ist eine Klasse, die als Proxy zwischen Sender und Empfänger dient. Denken Sie daran, dass das Senden von Ereignissen ziemlich teuer ist. In einer solchen Situation würde ich nur auf Panel-Referenzen verweisen, anstatt Ereignisse zwischen ihnen zu senden. – mlewandowski