As described in another question,我有一組Model對象和一組相關聯的Panel對象,允許用戶訪問Model對象中的數據。面板被註冊爲模型的PropertyChangeListeners,這樣如果其他內容更新模型中的值,它會觸發一個PropertyChangeEvent,面板接收它並知道重新同步模型中的值。 (目前我天真地只是更新所有的值,但是這樣做可以使智能更加靈活,只需要更改屬性。)你如何讓一個類監聽由其他類造成的PropertyChangeEvents,但不是這個類?
所有這些在模型被某些任意的未知源更新時都是有意義的,發生在我的應用程序。但是,大多數情況下,模型的屬性是由面板本身設置的。在這種情況下,現在我已經將面板掛接爲模型的PropertyChangeListeners,我的代碼做了一些毫無意義的事情:面板更新模型後,面板從模型接收到一個PropertyChangeEvent,並從中取出相同的值它最初發送給模型的模型。沒有更新需要發生,並且這沒有設計意義。
那麼我該如何註冊一個PropertyChangeListener,然後說「當我是他們的源時,不要通知我PropertyChangeEvents?」 (請注意,我無法通過調用PropertyChangeEvent.getSource()來回答這個問題;它會給我我的模型,而不是首先發送該值的面板;沒有辦法查看此內容並告訴更改了屬性)