GWT EventHandlers的触发顺序

时间:2009-07-06 10:45:32

标签: java gwt

是否有已知的命令来触发GWT EventHandlers?

即。如果我有一个扩展ListBox的类并从构造函数中添加一个EventHandler,我可以确定在另一个Handler之前调用这个Handler会被稍后的类添加吗?

同样,如果子类采用构造函数:

Subclass() {
    super();
    addChangeHandler(new ChangeHandler() {
        // ...
    });
}

但是超类具有相同的构造函数,它添加了一个ChangeHandler:

Superclass(){
    addChangeHandler(new ChangeHandler() {
        // ...
    });
}

我们可以假设在调用超类的构造函数时会触发它们的顺序并在子类之前添加Handler吗?

非常感谢,这让我很困惑。

克里斯。

1 个答案:

答案 0 :(得分:4)

按照添加处理程序的顺序进行触发。据我所知,这在javadoc中没有记录,但是我深入研究了GWT代码,并且最终在事件中调用com.google.gwt.event.shared.HandlerManager.HandlerRegistry.fireEvent(GwtEvent,boolean)方法被解雇了

在某些情况下,所有事件都以相反的顺序触发,但这似乎与主要小部件无关。如果您在com.google.gwt.event.shared.HandlerManager.HandlerManager(对象,布尔值)上执行调用层次结构,您将看到谁启用了反向触发调用HandlerManager。