16、高级swing组件.ppt
文本预览下载声明
第十五讲 高级Swing组件 目标 Swing 的MVC结构 树的概念 树组件JTree的使用 表格组件JTable的使用 MVC模式 3-1 在OOD中,有一个基本原则:不要让一个对象具有太多的功能。例如,对于按钮来说,不要让一个按钮类来完成所有的事情 MVC模式实现了这个设计原则: 模型(Model)--存储并操作数据 视图(View)--显示模型中的数据 控制器(Control)--处理用户输入,并决定是否改变模型或者视图(通过调用相应的方法) MVC模式 3-2 模型-视图-控制器三者之间的关系: MVC模式 3-3 MVC模式要点: 一个模型可以有多个视图和多个控制器 当模型改变时,模型的视图能够自动地得到通知 在一个视图中改变模型的属性,将导致模型其他视图也随之更新 由于模型独立于视图,所以不需要修改模型来适应新类型的视图或控制器 Swing组件的MVC设计 在Swing中,每一个用户界面组件都采用MVC模式进行设计 由于视图和控制器的职责分工有时不很明显, Swing的用户界面组件设计常采用如下模型: Swing按钮的MVC设计 3-1 Model 一个按钮的model由一个接口ButtonModel来完成(类DefaultButtonModel实现该接口) 。一个ButtonModel实例封装了其内部的状态,并且定义了按钮的行为。它的所有方法可以分为四类:1、查询内部状态(数据)2、操作内部状态(数据)3、添加和删除事件监听器4、通知发生事件 Swing按钮的MVC设计 3-2 View Controller 一个按钮的view/controller由一个接口ButtonUI完成(类BasicButtonUI实现该接口) 。如果一个类实现了这个接口,那么它将会负责创建一个用户界面,处理用户的操作。它的所有方法可以被分为三大类:1、绘制Paint2、返回几何类型的信息3、处理AWT事件 Swing按钮的MVC设计 3-3 程序员通常并不会直接和model以及view/controller打交道,他们通常隐藏于那些继承自javax.swing.JComponent的组件里面了 JButton类究竟是什么?事实上,它是一个继承了JComponent的简单的组件包装类,包含一个DefaultButtonModel对象、一些视图数据(例如按钮的标签和图标)以及一个负责按钮视图的BasicButtonUI对象 树的概念 树状结构是由很多节点组成的。每个节点既可以是树叶,也可以是子节点。每个节点(根节点除外)只有一个父节点。一个树状结构只有一个根节点。有时你可能拥有一个树的集合,每个树都有它自己的根节点。这种集合称为树林 程序中使用的树状结构 JTree JTree类(与它的帮助类一道)负责树状结构的布局,并且负责处理用户提出的展开和折叠各个节点的请求 构造函数: JTree() ;//用一个例子模型创建一个tree JTree(Object[]? value) ; JTree(Vector ?value) ; JTree(TreeModel? newModel) ;//用给定的树的数据模型创建一个tree JTree(TreeNode ?root) ;//用给定的根节点创建一个tree 创建树 3-1 要建立一个JTree,你必须在构造函数中提供该树的数据模型: TreeModel model = ……; JTree tree = new JTree(model); 如何能够得到树的数据模型呢?两种方法:方法一,通过建立一个用于实现TreeModel接口的类,来建立你自己的树的数据模型;方法二,使用Swing库提供的默认的树的数据模型类DefaultTreeModel 对于方法二,你要想得到一个默认的树的数据模型类的实例,必须提供一个根节点: TreeNode root = ……; DefaultTreeModel model = new DefaultTreeModel(root); 创建树 3-2 如何能够得到根节点呢?两种方法:方法一,通过建立一个用于实现TreeNode接口的类,来建立你自己的根节点类;方法二,使用Swing库提供的默认的节点类DefaultMutableTreeNode 在DefaultMutableTreeNode(默认的可变树节点)中,存放了一个对象,即用户对象。树绘制器能够为所有节点显示各个用户对象(以字符串形式) 你可以在DefaultMutableTreeNode的构造函数中设定用户对象,也可以在晚些时候用setUserObject方法来设定用户对象。如: DefaultMutableTreeNode node = new DefaultMutableTre
显示全部