Swing并非严谨地基于MVC的传统形式,它将View和Controller坍塌(collapse)成为一个,但保持Model是分离的。Swing的创始者选择这种简化设计,是为了处理组件里经常出现的View和Controller之间交互的复杂性。插图1.3提供了Swing坍塌式MVC设计的简化表示。合并的View-Controller被称为UI托管(UI delegate)。每个Swing组件都有一个托管对象(delegate object)来负责渲染组件的View,以及处理用户的输入事件。UI管理器是托管的扩展,它从全局管理应用中组件的外观和风格。
将Swing组件和MVC模式付诸实践的一个简单而具体的例子,就是JTextField——允许输入一行文本的文本组件。插图1.4给出了JTextField的简化表示。该组件的UI托管是BasicTextFieldUI,默认的Model是PlainDocument(它最终实现了Document接口)。
插图1.3 Swing中修改了的MVC
插图1.4 JTextField组件
JTextField组件的创建非常直截了当。如果你不指定Model,就会创建一个默认的Model,并且基于当前的外观与风格,在内部指派一个UI托管。
JTextFiled textField = new JTextField();
你可以在创建组件时,通过使用另外的构造函数为它指定自定义的Model。以JTextField为例,这个自定义Model必须实现Document接口。
JTextField textField = new JTextField (new MyCustomDocument());
创建组件后,你可以得到Model和UI托管的完全访问权。要访问JTextField的Model,可以使用下列方法:
Document textDoc = textFiled.getDocument();
TextField.setDocument (new MyCustomDocument());
其它组件通常使用getModel()和setModel(…),但结果是一样的——你能够访问组件身后的Model了。
要访问JTextField的UI托管,可以使用下列方法:
TextUI textUI = textField.getUI();
TextField.setUI (new MyCustomTextUI());
访问其它组件的UI托管与之非常类似。现在,你可以访问组件的各种property。其它组件如JTable和JTree,其创建并非如此简单,但依然遵循UI托管的设计。
分享到:
相关推荐
swing中的mvc实例 mvc在swing中的体现
通过Java Swing看透MVC设计模式
Swing MVC 代码 示例 Swing MVC 代码 示例
Java-Swing-MVC的使用范例,供大家参考。希望能够得到好评哦
java swing的mvc模式的简单框架,应用了用观察者模式于gui和控制器之间,将gui作为一个对象传进控制器进行处理,这个简单框架的控制器那里还有待改进。这个代码中包含了使用框架的简单例子在里面
Java Swing MVC使用
java swing MVC例子,学习swing不错。
一个关于java Swing MVC 的开发实例,
展示了Swing下的MVC各层级的结构
Model-View-Controller (MVC) Design Pattern
通过JavaSwing看透MVC设计模式PPT学习教案.pptx
Swing MVC 观察者 系统托盘 SwingWorker 电子相册
此项目是用java swing编写的桌面应用程序,采用mvc设计模式进行分层,所使用的数据从xml文件读取,下载后可直接导入到工作空间运行
简单实现了Swing下的MVC设计;Controller中含View,Model属性以及View中各组件的响应事件;View只负责界面展示;Model负责数据接收;Controller负责1.View事件的响应,并将数据传递给业务层;2.接收业务层的数据给...
这是一个java swing 开发的 FTP 客户端程序,演示如何使用MVC模式,用到 edtFTPj-2.3.0.jar. 主要功能: 1)点击连接按钮,输入ftp服务器登录信息,连接到服务器; 2)双击左侧本地文件夹列表的任意文件,可以上传到...
在Swing中使用高级的MVC和POJOs.doc
用JAVA swing 模拟实现Ftp客户端的基本操作,可以看到上传下载的速度等等,
Swing 天气预报 MVC JFreeChart Swing 天气预报 MVC JFreeChart Swing 天气预报 MVC JFreeChart
登录模块:实现两种用户登录。 基本信息:包括学生信息、管理员信息以及学生考试成绩信息管理。 课程查询:包括基本信息查询、成绩信息查询以及汇总查询。 系统管理:包括用户切换、用户修改密码、系统退出等功能。
编写模块化的Swing代码非常困难,这个简单的框架有助于在Swing中实现MVC。