Swing 應用程式中的EventListener 順序
在Swing 應用程式中,當向元件新增多個偵聽器時,這些偵聽器時,這些偵聽聽器收到通知的順序事件可以影響程式的行為。本問題探討了特定場景下監聽器呼叫的預期順序,以及是否有可靠的方法來確保所需的順序。
場景和觀察
考慮一個 Swing 應用程式子麵板監聽各個 JSlider,父面板監聽所有子麵板。為了獲得一致的結果,必須在新增子麵板偵聽器之前將父面板新增為偵聽器。這與 EventListenerList 類別推薦的順序以及問題引用的文章一致。
我們可以依賴該順序嗎?
EventListenerList 文件建議此順序監聽器通知是建議而不是保證。因此,在不同的 JRE 版本中依賴此順序可能存在風險。
替代解決方案
為了確保所需的順序,請考慮採用鍊式方法,讓偵聽器在給後來的聽眾。例如,子麵板的 ChangeListener 可以簡單地將事件轉送到自己的 stateChanged 方法中的父偵聽器。這種連結機制可靠地強制執行偵聽器通知的預期順序。
以上是Swing 應用程式中的事件偵聽器是否按可預測的順序執行?的詳細內容。更多資訊請關注PHP中文網其他相關文章!