Maison >Java >javaDidacticiel >Les écouteurs d'événements dans les applications Swing s'exécutent-ils dans un ordre prévisible ?
Ordre des écouteurs dans les applications Swing
Dans les applications Swing, lorsque plusieurs écouteurs sont ajoutés aux composants, l'ordre dans lequel ces écouteurs sont notifiés un événement peut avoir un impact sur le comportement du programme. Cette question explore l'ordre attendu d'invocation de l'auditeur dans un scénario spécifique et s'il existe des moyens fiables de garantir l'ordre souhaité.
Scénario et observations
Envisagez une application Swing avec des sous-panneaux écoutant des JSliders individuels et un panneau parent écoutant tous les sous-panneaux. Pour obtenir des résultats cohérents, il faut ajouter le parent en tant qu'auditeur avant d'ajouter l'auditeur du sous-panneau. Cela correspond à l'ordre recommandé par la classe EventListenerList et à un article référencé par la question.
Pouvons-nous nous fier à l'ordre ?
La documentation EventListenerList suggère que l'ordre La notification à l'auditeur est une recommandation plutôt qu'une garantie. En tant que tel, s'appuyer sur cet ordre dans différentes versions de JRE peut être risqué.
Solution alternative
Pour garantir l'ordre souhaité, envisagez une approche de chaînage dans laquelle les auditeurs transmettent les événements aux auditeurs ultérieurs. Par exemple, le ChangeListener du sous-panneau pourrait simplement transmettre l'événement à l'écouteur parent au sein de sa propre méthode stateChanged. Ce mécanisme de chaînage applique de manière fiable l'ordre prévu des notifications des auditeurs.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!