在Swing Gui中,每個組件都通過設計引用其自己的數據模型以顯示數據。儘管它們沒有引用通用模型,但由於程序的語義,有時組件可能會互相「依賴」。gui組件之間依賴關係的模式
例如:如果Gui有一個JToggleButton顯示/隱藏表和另一個JButton, 其actionListener計算該表中的行,當前者未被選中時,後者必須被禁用(並且表不可見)。事實上 - 假設 - 計算不可見表格的行可能會導致不一致的狀態。比如說,當表被隱藏時,JButton的actionListener調用一個設置爲null的變量的方法。
我知道這是一個非常微不足道的例子。但是我經常發現,我不得不查看組件之間的所有依賴關係。而且我必須禁用一些組件,以防止用戶通過在錯誤的時間點擊錯誤的按鈕而將程序帶入不一致的狀態。因此,我開始想知道是否有更有組織和標準的方法來解決這個問題,而不僅僅是瀏覽代碼並將一些setEnable(false),在這裏和那裏,我注意到有一個依賴關係。
一種方法,我想可能是有一個布爾值的依賴矩陣:接口的每個可能狀態爲一行,接口的每個組件爲一列。 矩陣[i] [j]將真如果在狀態我,組分Ĵ必須被禁止。和否則爲。
你對此有何想法?有什麼樣的設計模式可以解決這個問題嗎?
歡呼
我傾向於使用事件總線來解決這些類型的問題。它們允許鬆散耦合的代碼 - 參與方不需要了解彼此,只是事件本身。我已經使用谷歌番石榴和大使提供的巨大效果。我會說最好避免使用大量的布爾矩陣。 –