MVC 是 Model-View-Controller 的简称,即模型—视图—控制器。这个模式最早是应用在 Xerox PARC 的 SmallTakl 语言上,至今已经得到广泛的认可。
下面就对 Java Swing MVC 的概念进行如下说明。
·模型(Model):是存储 Swing 组件数据的地方,例如 JTable 的 Model 会存储表格上的所有数据。负责维护数据。模型通常提供访问和修改数据的方法。当模型变化时,这个模型还把事件发送给已登记的视图,对此,视图根据模型的变化来更新自己。
·视图(View):指 Swing 组件的外观显示效果。负责提供模型的部分数据的可视图。
·控制器(Controller):响应用户在 Swing 组件上的具体操作,为视图处理事件。鼠标和动作监听器等 AWT 和 Swing 监听器都是 MVC 控制器。
图1显示了这几个模块各自的功能及它们之间的相互关系。
MVC 需要很强的设计功能。分述如下:
首先,应当把多个视图和控制器插入到单个模型中,这是 Swing 插入式界面样式的基础。
其次,当模型改变时,模型的视图能够自动地得到通知。在一个视图中改变模型的属性,将导致模型其他的视图也随之更新。
最后,由于模型独立于视图,所以,不需要修改模型来适应新类型的视图或控制器。
(1)插入式视图和控制器
Swing 容器把定位它们所包含的组件及确定这些组件大小的工作委托给一个布局管理器。布局管理器封装了布局组件的策略。例如,FlowLayout 布局管理器的策略是用组件的首选大小来安排组件的大小,并以从左到右、从上到下的顺序定位组件。
封装的策略使它们是可插入的。例如,布局管理器可以在编译时,也可以在运行时插入到容器中。
通过封装在视图中可视地表示数据的策略及封装控制器中处理事件的策略,MVC 体系结构提供了可插入视图和控制器。就像布局管理器可以插入到 AWT 和 Swing 组件中一样,视图和控制器也可以插入到模型中。
(2)视图更新
Swing (和 AWT )事件由向事件源登记了的事件监听器来处理。例如,按钮的激活事件由一个对象所处理,这个对象实现 ActionListener 接口,并且通过调用这个按钮的 addActionListener 方法向这个按钮进行了登记。
事件源和监听器是 Observer 样式的一个例子,Observer 样式允许单个对象在所观察的对象修改时通知许多观察器。Observer 样式需要在被观察对象与它的观察器之间有一个很小的接口区。例如,上面描述的动作监听器可以是任何类型的对象,只要它实现 ActionListener 接口。而且,按钮除了知道如何和何时通过观察器之外,对观察器一无所知。
当模型改变时,MVC 体系结构使用 Observer 样式来通知视图。模型可以有许多视图,所有的视图通常都用模型的通知来同步。而且,任何类型的视图都可以在不使模型本身有任务变化的情况下观察一个模型。
事件由控制器处理,控制器根据事件的类型来改变模型一个或多个视图。
模型维护一个视图列表,这些视图为获得模型变化通知已经向模型登记过了。当模型发生变化时,该模型通知已向此模型登记的每个视图。视图通常从该模型中获得信息以进一步澄清这个事件,接着再更新它们自己。
MVC 的优点是:很久以来,MVC 体系结构一直是建立在 Smalltalk 应用程序的基础上。面向对象开发的最基础的方面是确认对象并在类中封装对象。例如,一个工资册应用程序可能确认雇员、工资等对象。在类中封装对象允许在对象间建立松散的联系,这样就减少了依赖性,增加了灵活性和再使用性。
MVC 封装了3个在大多数图形应用程序都存在的通用对象:模型、视图和控制器。通过封装其他体系结构的优秀特性,MVC 应用程序比相应的传统应用程序更灵活和更具有使用性。
Swing MVC 是典型 MVC 的专业版本,其设计目的是支持插入式界面模式而不是通用应用程序。Swing 轻量组件由下面的对象组成:
·一个维护组件的数据模型。
·UI 代表,它是一个带事件处理监听器的视图。
·一个扩展 JComponent 的组件。
Swing 模型可以直接对应典型的MVC模型。这两个模型都维护数据并提供数据访问方法,当它们发生变化时,它们会通知监听器。
Swing 组件把它们的界面样式交给一个UI代表来处理。UI代表与典型的MVC中的视图控制器组合相对应。从现在开始,控制器又称做监听器。Swing监听器通常作为UI代表的内部类来实现,并且根据组件所表现的复杂程序,组件代表可以有许多处理事件的内部类监听器。
- 大小: 4.5 KB
分享到:
相关推荐
此项目是用java swing编写的桌面应用程序,采用mvc设计模式进行分层,所使用的数据从xml文件读取,下载后可直接导入到工作空间运行
展示了Swing下的MVC各层级的结构
项目整体思路清晰,简单易上手,适合新手学习Java基础和数据库基础,并采用MVC设计模式。资源中附有《项目源码》、《项目配置教程》、《学习JavaSwing方法》、《项目设计文档》。如果不懂的小伙伴还可以加V或者私信...
一个采用Java Swing和MySQL的桌面应用程序,具有MVC体系结构,并为学生、教师和管理员提供三个用户仪表板.zip
Swing 的MVC结构 树的概念 树组件JTree的使用 表格组件JTable的使用
本向导采用MVC结构,实现了对行为的封装,视图的自定义等。使用非常方便。
基于java swing开发的桌面程序-学生信息管理系统,实现了增删改查 包括用户的登陆注册等功能 项目采用技术: javabean+swing+jdbc+mysql进行开发 采用mvc的技术结构
此系统采用Java程序设计语言编写,数据库采用MySQL数据库管理系统。...慢慢掌握基于MVC结构程序思想和完全面向对象思想开发程序。希望在以后的实践中慢慢提高。最后感谢我的组员和帮助我的热心的同学们
一款比较简单的Java swing mysql...数据库采用的是mysql,采用mvc分层设计模式,功能结构层次非常清晰,小白也能一看就明白,非常适合Java初学者和学生学习参考,可以用来做课程设计,包运行,有运行指导。有问题加我vx
JAVA SWING gui 仓库管理数据库课程设计报告+源代码 请用eclipse打开项目 IntelliJ IDEA需要自己进行配置 提供了配置的全套教程 包括数据库文件 直接导入即可使用 程序是一个比较简单的程序 本系统是一个基于Java ...
大多swing 开发人员现在都知道swing 的组件采用的是模型-与-视图分离的设计,也有大量的swing 使用者撰文陈述swing 是基于“改良的MVC(模型-视图-控制者)结构”。
2、正确导入项目后,我们看一下包结构:分为Dao、model、view、util四个顶层包,采用mvc设计模式。 3. 第二部分是导入数据库。我们使用非常好用的navicat数据库管理程序。我们鼓励您也使用它。 4. 首先新建一个...
一开始我们还是按照MVC结构写的,写着写着就视图,用户操作逻辑,数据库数据操作就都写在一起了,比如管理员操作界面(View层)就嵌入了SQL语句直接操作数据库了,好在是一个学习过程。 1. 系统角色分为用户与管理员...
一、项目简介 本项目是一套基于Java swing和mysql实现学生信息...项目结构:分为Dao、model、view、util四个顶层包,采用的是mvc的设计模式。 详见 https://blog.csdn.net/weixin_43860634/article/details/132543148
基于Swing的飞机航空机票订票系统(客户端) 软件架构 MVC 使用说明 1.建立 flight_data 数据库,执行flight_data.sql 文件 2.更改jdbc的url 为 jdbc:mysql://localhost:3306/flight_data 3.添加 ps:开发环境idea
2. 正确导入项目后我们来看下包结构:分为Dao、model、view、util四个顶层包,采用的是mvc的设计模式。 3. 第二部需要导入数据库,我们用的是navicat数据库管理软件,非常好用,建议大家也使用这个。 4. 首先先新建...
extjs 写的动态加载、增删改查、拖拽Tree (java mysql数据库 已有表结构 eclipse可直接导入)(完整版)
所以建议使用Eclipce,还得在其中使用window builder插件,按照压缩包中课程报告中所显示的界面进行窗口设计,否则窗口设计能不能看懂都是个问题,设计完窗口就可以按照代码进行功能的实现,而且本程序使用MVC结构每...
2.正确导入项目后我们来看下包结构:分为Dao、model、view、util四个顶层包,采用的是mvc的设计模式。 3.第二部需要导入数据库,我们用的是navicat数据库管理软件,非常好用,建议大家也使用这个。 4.首先先新建一个...