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!