我想編程一個swing應用程序,並學習一些關於mvc模式。另外我想保持我的Swing代碼清潔,所以我將我的GUI分成不同的類。 該類結構的一部分是這樣的:swing和mvc - 聽聽者的地方
//all classes extending BasicGuiElement
-EntireContentElement has:
---ControlElement has:
------MainMenuElement
MainMenuElement包含MainMenuBar,菜單的和的MenuItems。現在,不同的MenuItem需要不同的ActionListeners。
這裏是我的問題:這個ActionListener的來自哪裏?我應該在視圖中創建EntireControlElement,我傳遞一個HashMap並將所有元素傳遞給MainMenuElement。如果我有很多類都需要一堆動作偵聽器,我會傳遞一個偵聽器地圖列表?這將是非常醜陋的代碼,不是嗎?
另一種解決方案是將模型作爲模型接口傳遞給視圖,並從動作偵聽器中調用模型方法,這將在視圖類中創建......這是一種更好的方法嗎?
謝謝!
的模型和視圖,一般來說,應該不知道對方的存在,並應通過控制器進行橋接,這意味着控制器應扮演觀察者的角色並回應適當的事件。你可以做的一件事就是在視圖和控制器之間定義一個契約,它描述了視圖可以執行的操作(甚至是一個通用的「菜單事件」),控制器可以對該操作作出反應。您可以直接在視圖中將'ActionListener'附加到您的組件中,然後將適當的事件觸發回控制器。 – MadProgrammer 2015-04-01 22:59:00
類型的展示了這個想法[這裏](http://stackoverflow.com/questions/26517856/java-swing-where-do-actionlisteners-belong-according-to-mvc-pattern/26518274#26518274) – MadProgrammer 2015-04-01 22:59:23