Swing框架之Model

构建应用程序应该以数据为中心,而不是以用户界面为中心,这是一个良好 的编程习惯。为支持这种编程范式,Swing为每种带有逻辑数据或值的组件定义 了独立的模型接口,这种分割使程序可以选择向Swing组件中嵌入自己的模型实 现。

下面表格列出Swing中组件及其模型的映射关系:

组件 Model接口 Model类型
JButton ButtonModel GUI状态
JToggleButton ButtonModel GUI状态/应用数据
JCheckBox ButtonModel GUI状态/应用数据
JRadioButton ButtonModel GUI状态/应用数据
JMenu ButtonModel GUI状态
JMenuItem ButtonModel GUI状态
JCheckBoxMenuItem ButtonModel GUI状态/应用数据
JRadioButtonMenuItem ButtonModel GUI状态/应用数据
JComboBox ComboBoxModel 应用数据
JProgressBar BoundedRangeModel GUI状态/应用数据
JScrollBar BoundedRangeModel GUI状态/应用数据
JSlider BoundedRangeModel GUI状态/应用数据
JTabbedPane SingleSelectionModel GUI状态
JList ListModel 应用数据
JList ListSelectionModel GUI状态
JTable TableModel 应用数据
JTable TableColumnModel GUI状态
JTree TreeModel 应用数据
JTree TreeSelectionModel GUI状态
JEditorPane Document 应用数据
JTextPane Document 应用数据
JTextArea Document 应用数据
JTextField Document 应用数据
JPasswordField Document 应用数据

Swing模型分类

Swing提供的模型分为两大类:GUI状态模型和应用数据模型。

GUI状态模型是描述GUI控件可视化状态的接口,如按钮是否按下,或列表中 那一项被选中。GUI状态模型通常仅在图形用户界面(GUI)环境中用到。通常来说 ,虽然编写使用GUI状态模型分离程序,尤其是当多个GUI控件共享状态,或当操 作一个控件自动更新另一个的值时比较有用,但GUI状态模型在Swing中并不是必 需的,完全可以通过组件顶层方法操作GUI控件的状态,而不必和模型直接交互 。

应用数据模型是描述具有应用程序含义数据的接口,比如表格中的数据,或 列表显示的选项。这些数据模型为Swing提供了一个清晰分割应用程序界面和数 据逻辑的强大编程模式。对于以数据为核心的Swing组件,比如JTree和JTable, 强烈推荐使用数据模型进行交互。

当然一些组件的模型根据应用场景的不同其分类介于GUI状态模型和应用数据 模型之间,比如JSlider和JProgressBar 的BoundedRangeModel。

Swing的可分离模型接口并没有明确界定GUI状态模型和应用数据模型。这儿 所以做此说明,目的是让你更好的理解何时以及为何要需要使用分离的模型。

时间: 2024-08-19 22:28:43

Swing框架之Model的相关文章

swing框架dispose()不能一次关闭的问题。

问题描述 swing框架dispose()不能一次关闭的问题. 初学 .从一个buttom跳转到一个提示页面.点击确定按钮,增加一个actionperformed,无论在我增加的代码之前 添加dispose()还是在代码后面添加都需要点击两次才能关闭.这是什么情况的,,,求指教!!!

K-Framework 1.4.8B发布 Java/Swing框架

KFramework是一个为实施SOFEA/SOUI架构和域名驱动设计的分布式/网络应用的Java/Swing框架.在这种方式下,http://www.aliyun.com/zixun/aggregation/7155.html">开发人员集中在商业模式或问题域和客户端的用户界面,而框架处理映射到UI,序列化/事物化,运输,事务性,参照完整性,安全性和持久性. KFramework是一个可执行的语义框架,可通过配置.计算和规则来定义编程语言,calculi以及各种表达式分析工具. K-Fr

K-Framework 1.4.8B1发布 Java/Swing框架

K-Framework 1.4.8B1此版本修复示范项目Glassfish会不会重新加载,除非取消部署的服务器的数据源配置问题. KFramework是一个为实施SOFEA/SOUI架构和域名驱动设计的分布式/网络应用的Java/Swing框架.在这种方式下,http://www.aliyun.com/zixun/aggregation/7155.html">开发人员集中在商业模式或问题域和客户端的用户界面,而框架处理映射到UI,序列化/事物化,运输,事务性,参照完整性,安全性和持久性.

【Nepxion - 开源 Awt&Swing 框架和组件库】

问题描述 NepxionAwt&Swing开源库整合将近一百种样式新颖,风格独特,以及功能,丰富的界面控件,同时提供一套轻量级的界面框架解决方案,并适配于不同的外观风格,实现可定制化,可扩展化.其具备如下几个特点:1.纯Java技术,实现跨平台2.组件原子化和良好的粒度实现化3.支持C/S,B/S两种方式的部署4.支持三种框架组件的实现5.强大的风格预制和定制功能GoogleCode主页http://code.google.com/p/nepxion/源代码SVN下载http://nepxion

PHP的Yii框架中Model模型的学习教程_php技巧

模型是 MVC 模式中的一部分, 是代表业务数据.规则和逻辑的对象. 模型是 CModel 或其子类的实例.模型用于保持数据以及与其相关的业务逻辑. 模型是单独的数据对象.它可以是数据表中的一行,或者一个用户输入的表单. 数据对象的每个字段对应模型中的一个属性.每个属性有一个标签(label), 并且可以通过一系列规则进行验证. Yii 实现了两种类型的模型:表单模型和 Active Record.二者均继承于相同的基类 CModel. 表单模型是 CFormModel 的实例.表单模型用于保持

CodeIgniter框架模型(model),视图(view)和控制器(controller)中的文件操作

==============调用视图============= 控制器需要根据用户访问的不同方法,去调用相关的视图 a:调用一个视图 在controller文件夹下创建一个新文件,复制welcome文件里的内容 $this->load->view('视图文件名');   b.调用多个视图 $this->load->view('hello_index_h'); $this->load->view('hello_index'); $this->load->vie

Backbone.js框架中Model与Collection的使用实例_基础知识

Model关于backbone,最基础的一个东西就是model,这个东西就像是后端开发中的数据库映射那个model一样,也是数据对象的模型,并且应该是和后端的model有相同的属性(仅是需要通过前端来操作的属性). 下面就从实例来一步一步的带大家来了解backbone的model到底是什么样的一个东西. 首先定义一个html的页面: <!DOCTYPE html> <html> <head> <title>the5fire-backbone-model<

Swing显示框架

尽管程序片和应用程序都可以变得很重要,但如果在任何地方都使用它们就会变得混乱和毫无用处.这一节余下部分取代它们的是一个Swing程序例子的显示框架:   //: Show.java // Tool for displaying Swing demos package c13.swing; import java.awt.*; import java.awt.event.*; import javax.swing.*; public class Show { public static void

SSH框架网上商城项目第24战之Struts2中处理多个Model请求的方法_java

1. 问题的提出 Struts2中如果实现了ModelDriven<model>接口就可以将传来的参数注入到model中了,就可以在Action中使用该model,但是如果现在有两个model都需要在同一个Action中使用该咋整呢?比如上一节我们完成了在线支付功能,但是支付完成了还没结束,我们需要接收从第三方那边反馈回来的信息,比如成功支付后,我们需要给付款方发送邮件和短信等.所以我们还需要在payAction中获取从第三方传过来的参数,由于从第三方传过来的参数与我们传过去的参数是不同的,所