首页  >  文章  >  Java  >  Swing 应用程序中的事件侦听器是否按可预测的顺序执行?

Swing 应用程序中的事件侦听器是否按可预测的顺序执行?

Susan Sarandon
Susan Sarandon原创
2024-11-10 20:31:02464浏览

Do Event Listeners in Swing Applications Execute in a Predictable Order?

Swing 应用程序中的 EventListener 顺序

在 Swing 应用程序中,当向组件添加多个侦听器时,这些侦听器收到通知的顺序事件可以影响程序的行为。本问题探讨了特定场景下监听器调用的预期顺序,以及是否有可靠的方法来确保所需的顺序。

场景和观察

考虑一个 Swing 应用程序子面板监听各个 JSlider,父面板监听所有子面板。为了获得一致的结果,必须在添加子面板侦听器之前将父面板添加为侦听器。这与 EventListenerList 类推荐的顺序以及问题引用的文章一致。

我们可以依赖该顺序吗?

EventListenerList 文档建议该顺序监听器通知是建议而不是保证。因此,在不同的 JRE 版本中依赖此顺序可能存在风险。

替代解决方案

为了确保所需的顺序,请考虑采用链式方法,让侦听器在给后来的听众。例如,子面板的 ChangeListener 可以简单地将事件转发到其自己的 stateChanged 方法中的父侦听器。这种链接机制可靠地强制执行侦听器通知的预期顺序。

以上是Swing 应用程序中的事件侦听器是否按可预测的顺序执行?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn