我想编程一个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