Java桌面程序开发第6章-使用Swing高级组件_第1页
Java桌面程序开发第6章-使用Swing高级组件_第2页
Java桌面程序开发第6章-使用Swing高级组件_第3页
Java桌面程序开发第6章-使用Swing高级组件_第4页
Java桌面程序开发第6章-使用Swing高级组件_第5页
已阅读5页,还剩28页未读, 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Java桌面程序开发

目录第1章认识Java桌面程序第2章开发第一个Java桌面程序第3章事件处理机制第4章容器与布局第5章使用Swing常用组件第6章使用Swing高级组件第7章连上DB的Java桌面程序第8章

Java桌面程序实例:联系人管理第6章使用Swing高级组件教学要求

1.掌握:构造JTable表格的常用方法,使用表格来表现统计数据,构造JTree树结构的常用方法2.了解:使用TableCloumn,JTable的事件处理,JTree的事件处理6.1 使用表格JTable6.1.1看看效果使用表格表现数据观上图可以发现,表格由2部分构成,一是每一列的列标题,如“姓名”,“班级”,“成绩”等,二是多行数据构成的二维数据结构,如小明、小红、张三各自的信息。Swing中使用JTable来构造表格,构造方法多样,其中就包含如上所述的使用表格列标题和二维数据来构造表格的构造方法:

JTable(Object[][]rowData,Object[]columnNames)

此方法可以构造一个JTable来显示二维数组rowData中的值,其列名称为columnNames。6.1.2JTable简介及基本用法JTable的常用构造方法:JTable(intnumRows,intnumColumns):使用DefaultTableModel构造具有numRows行和numColumns列个空单元格的JTable。

JTable(Object[][]rowData,Object[]columnNames):构造一个JTable来显示二维数组rowData中的值,其列名称为columnNames。

JTable(TableModeldm):构造一个JTable,使用数据模型dm、默认的列模型和默认的选择模型对其进行初始化。

实例例6-2JTable的使用6.2 使用表格模型TableModel 使用表格模型可以实现将表格数据存储至表格模型,然后再以表格模型来构造JTable表格对象,这样表格模型可以专注于存储数据,而构造JTable表格对象时也不必过多考虑表格数据的细节问题了,灵活性和适应性都会更强。在javax.swing.table包中定义了一个名为TableModel的接口,此接口定义了若干关于表格数据的存取方法:包括存取表格单元格的内容,计算表格的列数,获取表格列的名称,返回表格列的数据类型等等。我们可以先构造TableModel的对象存储表格数据,然后以此对象为参数再来构造JTable表格对象。6.2.1AbstractTableModel类

由于TableModel本身是一个接口,如果以实现该接口来创建自己的表格模型不是一件轻松的事情,因为要实现接口的所有方法。所幸,Swing包另外提供了2个已经实现了TableModel接口的类:抽象类AbstractTableModel和类DefaultTableModel。我们可以从这2个类入手来实现所需的表格模型。AbstractTableModel是一个实现了TableModel接口的表格模型抽象类,它实现了大部分的TableModel接口方法,但getColumnCount()、getRowCount()和getValueAt()三个方法它并没有实现。我们在利用AbstractTableModel类创建自己的表格模型类时,必须要实现这3个方法。这3个方法的作用如下:getColumnCount()方法,其返回值用于确定表格的列数目;getRowCount()方法,其返回值用于确定表格的行数目;getValueAt()方法,其返回值用于确定表格每个单元格的内容。实例例6-3利用AbstractTableModel类创建表格模型,再以此表格模型创建表格例6-4进一步为表格设好列标题6.2.2DefaultTableModel类DefaultTableModel是继承自AbstractTableModel的表格模型类,AbstractTableModel类中未实现的3个方法也都实现了,使用起来比之AbstractTableModel还要来得简单DefaultTableModel类的常用构造方法如下:DefaultTableModel(Object[][]data,Object[]columnNames):构造一个DefaultTableModel,并通过将data和columnNames传递到setDataVector方法来初始化该表。DefaultTableModel(Object[]columnNames,introwCount):构造一个DefaultTableModel,它的列数与columnNames中元素的数量相同,并具有rowCount行null对象值。

实例例6-6使用DefaultTableModel创建表格实例例6-6使用DefaultTableModel创建表格实例功能:(1)点击“所有学生”按钮,可从数据库中检索出学生信息表的所有记录,并在表格中显示出来。(2)在文本框中输入检索关键字后点击“查询”按钮可以按照姓名模糊检索相关学生信息,并在表格中显示出来。(3)若检索关键字留空而试图检索学生信息则会弹出警告对话框,提示用户必须先输入检索关键字才能进行查询工作。实现要点项目文件夹(源代码)结构Java程序连接数据库时必须提供驱动程序,如上图所示的mysql-connector-java-5.1.13-bin.jar就是Java连接MySQL数据库的驱动程序主要由3个类实现:DBConnection,用于建立Java程序与MySQL数据库的连接;StudentDao,提供检索数据库中所有学生和按姓名模糊检索学生的方法(检索的结果都转存到了String[][]结构中,在ShowStudnetInfo中进行事件处理时就可以利用此2个方法得到所需要的表格数据。)ShowStudnetInfo,此项目的主类,实现了用户界面和事件处理,可以根据用户的操作显示所有学生信息或是显示按姓名查找出来的部分学生信息。6.3 认识表格列TableColumnTableColumn类位于javax.swing.tableTableColumn代表了JTable表格中列的所有属性,可以使用该类提供的方法对列的属性进行各种设置TableColumn类还允许为某列的单元格设置编辑器,如复选框、下拉列表和文本框。例6-7实现单元格的可编辑6.4 与表格有关的事件表格上的事件大致包括单元格内容的修改,列数的增删,行数的增删,表格结构的改变等,这些事件我们称之为TableModelEvent事件,该事件类位于javax.swing.event包。事件类对应的监听器接口为TableModelListener。实例例6-8表格事件的处理:当用户修改学生成绩低于60分时,“需补考”列的状态自动更新为true,反之,“需补考”列的状态自动更新为false,同时界面下方显示当前修改的是哪个单元格的值。6.5 使用树状结构JTree6.5.1看看效果6.5.2JTree简介及基本用法Swing中的JTree类可以方便地构造树状结构,其常用的构造方法如下所示:JTree():返回带有示例模型的JTreeJTree(TreeModelnewModel):返回JTree的一个实例,它显示根节点,使用指定的数据模型创建树。

JTree(TreeNoderoot):返回JTree的一个实例,它显示根节点,指定的TreeNode就作为其根。

JTree(TreeNoderoot,booleanasksAllowsChildren):返回JTree的一个实例,指定的TreeNode作为其根,并决定是否允许子节点的存在。

实例例6-9树结构的构造6.5.3使用TreeNode构造树TreeNode是位于javax.swing.tree包的树节点接口,我们在构造自己的树节点时一般不会采用实现接口的方式,而是采用继承接口的实现类的方式。TreeNode的实现类DefaultMutableTreeNode就可以帮助我们构造树节点,从而构造整棵树。实例例6-10使用DefaultMutableTreeNode构造树中节点,再构成树6.5.4使用TreeModel构造树TreeModel也是javax.swing.tree包中的接口,实际应用时通常使用其实现类DefaultTreeModel的构造方法DefaultTreeModel(TreeNoderoot)来构造树,其中root为该树的根节点。例6-11改用TreeModel方式来构造例6-10所示的树结构6.5.5与树相关的事件例6-12TreeSelectionEvent事件的监听和处理,在左侧JTree中选中某个节点时,右侧即显示相应的内容例6-13联系人树实现要点项目文件夹(源代码)结构由3个类实现:DBConnection,用于建立Java程序与MySQL数据库的连接;ContactDao,提供按关系检索联系人的方法;JTreeDemo5,此项目的主类,实现了用户界面和事件处理,可以根据用户

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论