GWT EventHandlers 的触发有已知的顺序吗?
即。如果我有一个扩展 ListBox 的类并从构造函数中添加一个 EventHandler,我能否确定这个 Handler 将在稍后由周围类添加的另一个 Handler 之前被调用?
同样,如果子类采用构造函数:
Subclass() {
super();
addChangeHandler(new ChangeHandler() {
// ...
});
}
但是父类(super class)有相同的构造函数,它添加了一个 ChangeHandler:
Superclass(){
addChangeHandler(new ChangeHandler() {
// ...
});
}
我们能否假设在调用父类(super class)的构造函数并在子类之前添加处理程序时触发它们的顺序?
非常感谢,这一直困扰着我。
克里斯。
最佳答案
触发确实按照添加处理程序的顺序发生。据我所知,这在 javadoc 中没有记录,但我深入研究了 GWT 代码和 com.google.gwt.event.shared.HandlerManager.HandlerRegistry.fireEvent(GwtEvent, boolean) 方法最终在事件发生时被调用被解雇。
在某些情况下,所有事件都以相反的顺序触发,但这似乎与主要小部件无关。如果您在 com.google.gwt.event.shared.HandlerManager.HandlerManager(Object, boolean) 上执行调用层次结构,您将看到谁在启用反向触发的情况下调用 HandlerManager。
关于java - GWT 事件处理程序的触发顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1086414/