Swing 应用程序中的 EventListener 顺序
在 Swing 应用程序中,当向组件添加多个侦听器时,这些侦听器收到通知的顺序事件可以影响程序的行为。本问题探讨了特定场景下监听器调用的预期顺序,以及是否有可靠的方法来确保所需的顺序。
场景和观察
考虑一个 Swing 应用程序子面板监听各个 JSlider,父面板监听所有子面板。为了获得一致的结果,必须在添加子面板侦听器之前将父面板添加为侦听器。这与 EventListenerList 类推荐的顺序以及问题引用的文章一致。
我们可以依赖该顺序吗?
EventListenerList 文档建议该顺序监听器通知是建议而不是保证。因此,在不同的 JRE 版本中依赖此顺序可能存在风险。
替代解决方案
为了确保所需的顺序,请考虑采用链式方法,让侦听器在给后来的听众。例如,子面板的 ChangeListener 可以简单地将事件转发到其自己的 stateChanged 方法中的父侦听器。这种链接机制可靠地强制执行侦听器通知的预期顺序。
以上是Swing 应用程序中的事件侦听器是否按可预测的顺序执行?的详细内容。更多信息请关注PHP中文网其他相关文章!