Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 首先调用哪个侦听器来处理事件_Java_Actionlistener - Fatal编程技术网

Java 首先调用哪个侦听器来处理事件

Java 首先调用哪个侦听器来处理事件,java,actionlistener,Java,Actionlistener,当两个或多个对象被添加为同一事件的侦听器时,首先调用哪个侦听器来处理该事件? 首先添加的侦听器或最后添加的侦听器。 我所说的事件是指AWT事件。我相信这就是您想要的。简而言之,发射顺序是不确定的。如果希望确保特定的顺序,可以尝试只添加一个侦听器,并按所需的顺序将事件传递给其他侦听器。在Swing中,这些通常使用保留插入顺序的EventListenerList对象来实现(它们由数组支持)。但是,这并不意味着侦听器将按该顺序调用。例如,这是AbstractButton中的实现: protected

当两个或多个对象被添加为同一事件的侦听器时,首先调用哪个侦听器来处理该事件? 首先添加的侦听器或最后添加的侦听器。
我所说的事件是指AWT事件。

我相信这就是您想要的。简而言之,发射顺序是不确定的。如果希望确保特定的顺序,可以尝试只添加一个侦听器,并按所需的顺序将事件传递给其他侦听器。

在Swing中,这些通常使用保留插入顺序的
EventListenerList
对象来实现(它们由数组支持)。但是,这并不意味着侦听器将按该顺序调用。例如,这是
AbstractButton
中的实现:

protected void fireStateChanged() {
    // Process the listeners last to first, notifying
    // those that are interested in this event
    for (int i = listeners.length-2; i>=0; i-=2) {
       //etc.
    }
}
所以在这种情况下,它实际上是以相反的顺序处理的。该代码符合给出了类似示例的

中讨论了向后遍历它的原因


所有这些显然都是特定于实现的,不应该依赖。

我们讨论的是什么事件?相同类型的两个侦听器都添加到一个源?我认为没有指定顺序。@assylias:ArrayList或LinkedList是实现actionListeners的方法吗?我想,您要寻找的是这个MCQ问题的答案:问题:。当两个或多个对象被添加为同一事件的侦听器时,首先调用哪个侦听器来处理该事件?A) 添加为侦听器的第一个对象。B) 添加为侦听器的最后一个对象。c) 无法确定将首先调用哪个侦听器。D) 对于给定的事件,不可能有多个侦听器。答案是C,无法确定将首先调用哪个侦听器。