Welcome 微信登录

首页 / 软件开发 / JAVA / Swing框架之Model

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

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

组件Model接口Model类型
JButtonButtonModelGUI状态
JToggleButtonButtonModelGUI状态/应用数据
JCheckBoxButtonModelGUI状态/应用数据
JRadioButtonButtonModelGUI状态/应用数据
JMenuButtonModelGUI状态
JMenuItemButtonModelGUI状态
JCheckBoxMenuItemButtonModelGUI状态/应用数据
JRadioButtonMenuItemButtonModelGUI状态/应用数据
JComboBoxComboBoxModel应用数据
JProgressBarBoundedRangeModelGUI状态/应用数据
JScrollBarBoundedRangeModelGUI状态/应用数据
JSliderBoundedRangeModelGUI状态/应用数据
JTabbedPaneSingleSelectionModelGUI状态
JListListModel应用数据
JListListSelectionModelGUI状态
JTableTableModel应用数据
JTableTableColumnModelGUI状态
JTreeTreeModel应用数据
JTreeTreeSelectionModelGUI状态
JEditorPaneDocument应用数据
JTextPaneDocument应用数据
JTextAreaDocument应用数据
JTextFieldDocument应用数据
JPasswordFieldDocument应用数据

Swing模型分类

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

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

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

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

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