




已阅读5页,还剩57页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第16章图形界面编程 图形用户界面 GraphicalUserInterface 简称GUI 提供了一种更加直观 友好的与用户进行交互的方式 利用Java语言进行图形用户界面操作主要由java awt和javax swing两个包来完成 其中 AWT包是图形用户界面处理的基本工具包 Swing包在AWT包的基础上进行了升级 扩展 具有更加强大的图形界面开发功能 本章在了解AWT包功能的基础上 重点讲解Swing的功能 1 16 1AWT简介 Java1 0的出现带来了抽象窗口工具箱 AWT 设计目标是希望构建一个通用的GUI 使得利用它编写的程序能够运行在所有的平台上 以实现Sun公司提出的口号 一次编写 随处运行 JavaAWT中包含了许多类来支持GUI设计 AWT由Java的java awt包提供 该包中有许多用来设计GUI的组件类 如按钮 菜单 列表 文本框等组件类 同时还包含窗口 面板等容器类 AWT的具体层次结构如图16 1所示 2 16 1AWT简介 Java提供了一系列AWT软件包 其中主要的包及包的描述如图16 2所示 3 16 1AWT简介 java awt包提供了基本的Java程序的GUI设计工具 主要包括组件 容器和布局管理器三个概念 其具体描述如图16 3所示 4 16 2Swing简介 Swing是Java基础类库 JavaFoundationClasses 中有关图形界面的类库 Swing扩展自AWT 例如JFrame扩展自Frame JButton扩展自Component等 基本上AWT中的每种控件都能在Swing中找到替代品 比如AWT中的Button对应于Swing中的JButton AWT中的TextField对应于Swing中的JTextField等 5 16 2Swing简介 Swing包是JFC JavaFoundationClasses 的一部分 它由许多包组成 这些包的名称及描述如表16 1所示 6 16 3容器类 窗口 JFrame 面板 JPanel 和对话框 J 是Swing中提供用来创建表示图形用户界面的类 该类的对象将被当作容器使用 所有的Swing组件都必须被添加到容器中 才能被显示出来 7 16 3 1JFrame类 JFrame是一个窗口容器组件 可以被显示在用户桌面上 同时也是一个框架 在其中 可以添加需要的其他的Swing组件 JFrame是少数几个不是通过绘制的方式显示的Swing组件 JFrame类的构造方法如图16 5所示 8 16 3 1JFrame类 JFrame类中还提供了一些与窗口有关的方法 其主要方法与方法描述如表16 2所示 9 16 3 2JDialog类 JDialog是一个用来创建对话框的类 是Dialog类的子类 创建的JDialog对象可以用来向用户返回信息 接收用户的输入 实现与用户的交互 JDialog与JFrame的区别在于 JDialog对象需要依赖于其他的对话框 比如Jframe 而存在 当它所依赖的对话框关闭或最小化的时候 该对话框也随之关闭或最小化 10 16 3 2JDialog类 JDialog类创建对话框对象的构造方法如图16 7所示 JDialog类中的主要方法及方法描述如表16 3所示 11 16 3 3JPanel类 在得到了JFrame的内容面板后我们就可以直接将其他的Swing组件放在其中 或者直接在上面描绘图画或文字 但是习惯上一般不会这么做 通常会将这些图画或文字信息描绘在名为JPanel的容器上 然后再将JPanel实例放在内容面板上 这样可以使得面板上的布局更合理 JPanel通常只作为纯粹的容器来使用 它不能像框架 窗口或者对话框那样独立存在 JPanel的构造方法如图16 9所示 12 16 4Swing常用基本组件 创建图形用户界面GUI 就是为了让计算机程序更好的和用户交互 JavaSwing提供了二十多种不同的用户界面组件 所有的Swing组件都是从javax swing Jcomponent类中派生而来的 从而继承了组件所特有的属性和方法 13 16 4 1常用组件的共性操作 Swing类库中的组件都继承自javax swing JComponent 因此都具有JComponent的操作 包括设置背景色 设置前景色 设置字体以及设置是否禁用等 表16 4中是JComponent中常用的方法及方法描述 14 16 4 2按钮 JButton 按钮是用户界面中常用的组件 用户使用Swing按钮可以显示图像 将整个按钮设置为窗口默认图标 来处理鼠标在按钮上的事件 java swing包中提供了标准的按压式按钮 JButton 同时提供了选择式按钮 多选择 JCheckBox 单选择 JRadioButton 等 我们在这里先来讲解JButton的知识 JButton的构造方法如图16 11所示 15 16 4 3文本框 JTextField 与密码输入框 JPasswordField 文本框 JTextField 也是一种常见的组件 用于处理一行文本 中间没有回车符 JTextField是JTextComponent的子类 密码输入框是JTextField的一个子类 JTextField和JPasswordField的构造函数形式和常用方法完全一样 这里只列出JTextField的构造函数 如图16 13所示 16 16 4 4文本域 JTextArea 文本域 JTextArea 也是一种常用组件 用于处理多行文本 JTextArea同JTextField一样 都是JTextComponent的子类 因此它们的很多操作都类似 我们不再赘述 JTextArea的构造函数如图16 15所示 17 16 4 5标签 JLabel 标签 JLabel 用来显示一段文本 常用在JTextField或者JTextArea前面 提示用户要填写什么样的信息 JLabel用于显示文字 也可以同时显示文字和图标 一般不用于接收鼠标键盘的动作 JLabel的构造方法如图16 17所示 18 16 4 6单选按钮 JRadioButton JRadioButton用来实现单选按钮组件 按钮有选中和没被选中两种状态 多个单选按钮中 一次只能有一个按钮处于被选中状态 JRadioButton的构造方法如图16 19所示 19 16 4 7复选框 JCheckBox JCheckBox是用来实现JCheckBox的组件 复选框是一个可以被选定和取消选定的项 它将其状态显示给用户 一次可以选中多个复选框 JCheckBox类的构造方法如图16 21所示 20 16 4 8下拉列表 JComboBox 下拉列表 JComboBox 是一种常见的组件 用户可以从下列的菜单列表中选择所需要的数据 一个下拉列表只能选择一个选项 JComboBox的构造方法如图16 23所示 可以将需要在下拉列表中显示的各项放入一个数组中 然后利用其相应的构造方法将数组元素的各项显示出来 21 16 4 9列表 JList JList是用来表示列表的组件 该组件与下拉列表不同 它可以显示多个项目的内容 并且允许用户从列表中选择一个或多个对象 JList的主要构造方法如图16 25所示 与下拉列表相同 可以将需要显示的内容先放入一个数组中 然后使用带有Object类型数组为参数的的构造方法创建一个JList对象 将列表中各项显示出来 22 16 4 10滚动条 JScrollPane JscrollPane类的对象可以创建一个垂直或者水平方向的滚动条 在实际使用中 它需要和某个容器相关联 例如 表格 窗体等 JScrollPane类的构造方法如图16 27所示 23 16 5Swing高级组件 16 4小节中我们介绍了Swing基本组件 但在实际应用中 对于一些比较复杂的界面 除了使用这些基本组件之外 还需要使用诸如表格 菜单 工具栏等这些组件 本节我们就来介绍Swing中的一些高级组件的创建和使用 包括表格 树 菜单 以及对话框等组件 24 16 5 1表格 JTable 表格 JTable 是Swing新增加的组件 主要是为了将数据以表格的形式显示 JTable是一个用来显示和编辑二维单元表格的组件 可以通过创建一个二维数组对象 并将二维数组中定义并初始化的值放入到表中 Jtable创建表格的主要构造方法如图16 29所示 25 16 5 2树 JTree 树是非常重要也是常用的一种数据结构 在计算机中也有着广泛的应用 计算机中的目录和文件的存储结构都是树形的 在Swing中 可以使用JTree来构建一个树形结构模型 首先我们可以先举一个树形结构的例子 例如在 我的电脑 的C盘下的目录结构 如图16 31所示 26 16 5 2树 JTree 在这个图中我们要注意以下几点 一颗树中只有一个根结点 其余结点都是从该结点引出 除根结点外 其余结点要么是没有子结点的结点要么是带有子结点的结点 没有子结点的结点称为叶子结点 在图16 31的树结构中 计算机 是根结点 Intel 文件是一个叶子结点 NVIDIA 文件是一个带有子结点的结点 然后我们看JTree的主要的构造方法 如图16 32所示 27 16 5 3菜单 JMenu 菜单 JMenu 是标题栏下面的一行文字部分 菜单是应用程序中最常用的组件 菜单的组织方式为 一个菜单条JMenuBar包含多个菜单项 JMenuItem JMenuItem有两个子类 分别为JRadioButtonMenuItem及JCheckBoxMenuItem用于表示单选菜单项和复选菜单项 28 16 5 3菜单 JMenu JMenu组件类的主要构造方法如图16 34所示 创建菜单项的JMenuItem的主要构造方法如图16 35所示 29 16 5 4工具栏 JToolBar 工具栏 JToolBar 提供了一种可以快速访问界面中常用命令的方式 通常工具栏应该放到边界布局中的一边 可以水平和垂直放置 也可以拖动工具栏将其放置在想要放置的位置 工具栏一般放到菜单栏的下面 可以把菜单栏中的常用命令放到工具栏中 以方便用户操作 30 16 5 4工具栏 JToolBar Java中可以通过创建JToolBar对象来实现工具栏 JToolBar的主要构造方法如图16 37所示 orientation参数可以是以下两个值中的任何一个 SwingConstants HORIZONTAL表示工具栏以水平方向放置 SwingConstants VERTICAL表示工具栏以垂直方向放置 31 16 5 5进程条 JprogressBar 进程条 JprogressBar 是以图形化的方式来描述任务进度的组件 在任务完成过程中 进度条显示该任务完成的百分比 百分比通常用可视化的矩形表示 该矩形开始为空 随着任务的执行 组件被填满 JprogressBar的主要构造方法如图16 39所示 32 16 5 6对话框 JDialog 对话框是一种大小不能变化 不能有菜单的容器窗口 对话框不能作为一个应用程序的主框架 而必须包含在其他的容器中 Java语言提供多种对话框类来支持多种形式的对话框 我们这里只为大家介绍一下简单的标准对话框 JOptionPane 33 16 5 6对话框 JDialog JOptionPane提供的对话框是模式对话框 使用JOptionPane 可以创建和自定义问多种类型的对话框 JOptionPane类的构造方法如图16 41所示 34 16 6布局管理器 在Java语言中 把创建的组件放置到对话框中 需要设置对话框界面的格式 这时候就必须使用布局管理器 layoutmanager 来排列界面上的组件 当组件被加入到容器中时 将如何排列 都由布局管理器来进行管理 Java中的布局管理器包括 FlowLayout GridLayout BorderLayout CardLayout和GridBagLayout 当创建好需要的布局管理器后 就可以调用容器的setLayout 方法 来设定该容器的布局方式 下面我们为大家具体介绍几种主要的布局管理器 35 16 6 1BorderLayout管理器 BorderLayout布局管理器将容器划分为东 East 西 West 南 South 北 North 中 Center 五个区域 它是Frame类的默认布局管理器 采用BorderLayout布局时 向容器中添加组件需要指定组件所在的区域 其大致所分区域如图16 43所示 36 16 6 1BorderLayout管理器 BorderLayout类的主要构造方法如图16 44所示 图中参数align指定了布局的位置 如表16 5所示 37 16 6 2FlowLayout管理器 流动布局是使用FlowLayout类来创建的 该布局方式是最简单的一种布局管理器 其排列组件的方式是按照 从左到右排列 当组件排列到容器行尾时 会自动换行并继续排列剩下的组件 它是Panel类的默认布局管理器 我们可以调用相关方法设置不同的组件间距 行距以及对齐方式 FlowLayout管理器的布局示意图如图16 46所示 38 16 6 2FlowLayout管理器 FlowLayout类的主要构造方法如图16 47所示 39 16 6 2FlowLayout管理器 图中参数align指定一种对齐方式 其具体描述如表16 6所示 如果对窗体的大小进行调整 组件在流布局中会根据窗体调整的大小重新调整其位置 如图16 49所示 40 16 6 3CardLayout管理器 网格布局GridLayout管理器 可以将容器划分为若干行与若干列的网格区域 并将组件放置在由行和列组成的网格中 采用GridLayout布局时 在容器中按照从左到右 从上到下的顺序往网格中逐个添加组件 GridLayout管理器的布局示意图如图16 50所示 41 16 6 3CardLayout管理器 GridLayout类的主要构造方法如图16 51所示 GridLayout类提供的对网格布局中的行 列 以及水平和垂直间距进行设置的方法如表16 7所示 42 16 6 4GridBagLayout管理器 GridBagLayout布局管理器在GridLayout布局管理器的基础上提供了更加复杂的功能 采用GridBagLayout布局时 一个组件可以跨越多个行列放在多个网格内 另外 可以通过设定填充方式 间距等任意调整组件的大小和位置 GridBagLayout管理器的布局示意图如图16 53所示 43 16 6 4GridBagLayout管理器 GridBagLayout类的构造方法与GridLayout类的构造方法基本相同 只是在GridLayout类基础上又增加了一些属性 如表16 8所示 44 16 6 5CardLayout管理器 CardLayout布局管理器用于将组件以卡片的形式进行布局 采用CardLayout布局 每张卡片属于不同的层次 并且充满整个容器 它将容器中的每个组件看作一张卡片 任何情况下 一次只能看到一张卡片 即一次只有一个组件可见 组件的顺序由组件对象本身在容器内部的顺序决定 CardLayout管理器的布局示意图如图16 55所示 45 16 6 5CardLayout管理器 CardLayout类的主要构造方法如图16 56所示 CardLayout类提供了一些方法用来翻转该布局中的组件 具体方法及其描述如表16 9所示 46 16 6 5CardLayout管理器 我们可以单击 前一张卡片 按钮和 后一张卡片按钮 发现实际显示在窗体的只能是一个按钮 且它们是按顺序排列的 如图16 58所示 47 16 6 6不使用布局管理器定位组件 不同的布局管理器会将组件定位在不同的位置 但是 有些时候并不想使用指定的某个布局管理器对组件进行定位 而是想按照自己的设计对组件进行定位 这时我们可以使用setBounds 方法来完成这一任务 setBounds 方法的语法格式如图16 59所示 48 16 7Swing的事件处理 前面几小节的主要内容是讨论组件的使用以及容器的布局 这些内容使Java图形用户界面的程序设计变得灵活方便 与图形界面程序密切相关的还有一个比较重要的内容 事件处理机制 49 16 7 1事件处理机制概述 事件处理是图形界面与用户进行交互的重要内容 Java语言的事件处理机制包括事件源 事件 事件处理器三个主要的概念 首先需要为事件源注册相应的事件处理器 事件源产生指定事件后 事件处理器捕获后进行相应事件处理 其大致处理机制如图16 61所示 50 16 7 1事件处理机制概述 以下是对三个概念的说明 事件源 产生事件的各种组件 如窗口 按钮 复选框等 事件 用户对事件源的各种操作动作 事件处理器 用于接收并处理事件的方法 在图形用户界面的程序中 用户的不同操作 如单击鼠标 移动鼠标 键盘输入等 会引发不同的事件类型 而不同的事件 需要相对应的事件监听器来监听并处理事件 在本节中就来讲解Java中有什么类型的事件 不同类型时间需要哪些特定类型事件监听器来处理 51 16 7 2事件监听器 实现事件处理 首先要实现监听器接口 然后调用事件源对象中的方法来一个添加监听器对象 当事件发生后 事件源会调用监听器接口中的方法 通过将事件对象传递给相应的监听器方法来实现对事件的处理 52 16 7 2事件监听器 每种事件类都有对应的事件监听器 它是事件监听器类的接口 各种事件类的接口描述如表16 10所示 53 16 7 3焦点事件 焦点事件类 FocusEvent 是指用户程序界面的组件焦点发生改变 即焦点从一个对象转移到另外一个对象 时 就会发生焦点事件 得到焦点事件的组件处于激活状态 使用焦点事件必须给组件增加一个FocusListener接口的事件处理器 该接口包含如下两个方法 如图16 63所示 54 16 7 4键盘事件 键盘事件用于处理用户在键盘上输入的信息 其中回车键的输入还可以通过ActionListener进行处理 表示键盘事件的类是KeyEvent 这个类除了包含有产生键盘事件的事件源 还包含了用户当前输入的是哪一个键的信息 实现该事件的类需要实现KeyListener接口 该接口中的方法如图16 65所示 55 16 7 4键盘事件 键盘事件类的方法及方法描述如表16 10所示 56 16 7 5鼠标事件 鼠标事件类 MouseEvent 指组件中发生的鼠标动作事件 如按下鼠标 释放鼠标
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 三基三严课件
- 2025-2030中国寺庙经济市场经营管理风险及未来前景展望报告
- 三十项重点要求课件
- 三农科普农业知识培训内容课件
- 禁摩公务员面试题精 编
- 高级文秘面试题目及答案参考
- 金泉小学面试指南相关面试题目详解
- 产品认证面试问题及答案:新面试真题解析
- 大班保育个人总结
- 大学生贫困申请书模板格式
- 广西2025年公需科目学习考试试题及答案4
- 代加工板材合同协议书范本
- 2025-2026学年新七年级上学期开学摸底考试语文试卷(广东专用)
- 早期诊断技术优化-第1篇-洞察及研究
- 2025 慢阻肺合并肺心病诊疗查房课件
- 2025二手房个人购房合同范本
- 2025年c语言大考试题及答案
- 2025年病历书写竞赛题库
- 2025年辅导员技能大赛试题题库(含答案)
- 2025版一次性社保补偿协议示范文本及争议裁决机制
- (标准)专利合同转让协议书范本
评论
0/150
提交评论