Maison >Java >javaDidacticiel >Les écouteurs d'événements dans les applications Swing s'exécutent-ils dans un ordre prévisible ?

Les écouteurs d'événements dans les applications Swing s'exécutent-ils dans un ordre prévisible ?

Susan Sarandon
Susan Sarandonoriginal
2024-11-10 20:31:02473parcourir

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

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn