Heim > Java > javaLernprogramm > Werden Ereignis-Listener in Swing-Anwendungen in einer vorhersehbaren Reihenfolge ausgeführt?

Werden Ereignis-Listener in Swing-Anwendungen in einer vorhersehbaren Reihenfolge ausgeführt?

Susan Sarandon
Freigeben: 2024-11-10 20:31:02
Original
502 Leute haben es durchsucht

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

EventListener-Reihenfolge in Swing-Anwendungen

Wenn in Swing-Anwendungen mehrere Listener zu Komponenten hinzugefügt werden, die Reihenfolge, in der diese Listener benachrichtigt werden Ein Ereignis kann das Verhalten des Programms beeinflussen. Diese Frage untersucht die erwartete Reihenfolge des Listener-Aufrufs in einem bestimmten Szenario und ob es zuverlässige Möglichkeiten gibt, eine gewünschte Reihenfolge sicherzustellen.

Szenario und Beobachtungen

Betrachten Sie eine Swing-Anwendung mit Unterpanels, die auf einzelne JSlider hören, und einem übergeordneten Panel, das auf alle Unterpanels hört. Um konsistente Ergebnisse zu erzielen, muss der übergeordnete Bereich als Listener hinzugefügt werden, bevor der untergeordnete Bereichs-Listener hinzugefügt wird. Dies stimmt mit der von der EventListenerList-Klasse empfohlenen Reihenfolge und einem Artikel überein, auf den in der Frage verwiesen wird.

Können wir uns auf die Reihenfolge verlassen?

Die EventListenerList-Dokumentation schlägt die Reihenfolge vor Die Anzahl der Hörerbenachrichtigungen ist eher eine Empfehlung als eine Garantie. Daher kann es riskant sein, sich über verschiedene JRE-Versionen hinweg auf diese Reihenfolge zu verlassen.

Alternative Lösung

Um die gewünschte Reihenfolge sicherzustellen, sollten Sie einen Verkettungsansatz in Betracht ziehen, bei dem Zuhörer Ereignisse weitergeben an nachfolgende Zuhörer. Beispielsweise könnte der ChangeListener des Unterpanels das Ereignis einfach innerhalb seiner eigenen stateChanged-Methode an den übergeordneten Listener weiterleiten. Dieser Verkettungsmechanismus erzwingt zuverlässig die beabsichtigte Reihenfolge der Listener-Benachrichtigungen.

Das obige ist der detaillierte Inhalt vonWerden Ereignis-Listener in Swing-Anwendungen in einer vorhersehbaren Reihenfolge ausgeführt?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage