当添加两个或多个对象作为同一事件的侦听器时,首先调用哪个侦听器来处理该事件?首先添加的侦听器或最后添加的侦听器。我所说的事件是指 AWT 事件。
问问题
1994 次
2 回答
3
在 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.
}
}
所以在这种情况下,它实际上是以相反的顺序处理的。该代码符合EventListenerList 的文档,该文档给出了类似的示例。
向后遍历它的原因将在另一篇文章中讨论。
所有这些显然是特定于实现的,不应依赖。
于 2013-01-04T18:53:09.023 回答
0
我相信这就是你要找的。简而言之,射击顺序是不确定的。如果您希望确保特定顺序,可以尝试仅添加一个侦听器,然后按所需顺序将事件传递给您的其他侦听器。
于 2013-01-04T18:43:45.677 回答