资源简介 课 堂 教 学 计 划 表课程名称 Java程序设计 教师姓名 专业班级授课时间 授课地点 学时数 16授课题目 § 7 图形用户界面教学目标及要求 知识目标 图形用户界面编程的概念;Frame(窗体)类;Java的布局管理;FlowLayout(顺序布局)类;BorderLayout(边界布局)类;GridLayout(网格布局)类;自定义布局;Java图形用户界面编程的事件处理机制;Label等常见基本组件类;Dialog(对话框)类;技能目标 掌握窗体的创建方法;掌握窗体容器的获取;会设置窗体容器的布局方式;会向窗体容器中添加组件;掌握常见组件的基本用法;掌握常用组件的事件处理过程;会创建自定义对话框;能根据实际需要设计出简洁易用的图形用户界面;教学重点 常用组件及类的使用;组件的布局设计;事件监控处理机制;教学难点 能综合应用本章知识设计美观易用的图形界面;事件监控处理机制项目描述 项目1:学习建立软件用户界面;项目2:保存和清除信息;项目3:设计网报信息登记表;教学方法 问题导引法:通过给学生提出实际编程中出现的问题来引入教学内容,使学生在主动分析、讨论和解决问题的过程中掌握所学知识;案例分析法:通过演示典型案例来讲解相关知识和技术的具体使用过程,使学生在具体的应用环境中加深对概念的理解;任务驱动法:通过完成项目中的各个任务逐步增强实战技能;教学过程设计 新课导入与项目展示首先通过提问、讨论等互动的形式引入课程新知识;然后通过演示本章项目来激发学生的学习兴趣,增强学生学习的积极性、主动性;项目任务分解带领学生分析本章项目并对项目进行任务分解,各项目分解任务如下:项目1:学习建立软件用户界面任务1:感知图形化用户界面任务2:制作“欢迎访问”的小程序任务3:独立显示GUI界面,且其大小可以伸缩任务4:建立可以进行人机交互的界面任务5:建立指定布局的GUI界面任务6:建立边界布局格式的GUI任务7:建立流布局格式的GUI任务8:建立网格布局格式的GUI任务9:建立卡片布局格式的GUI项目2:保存和清除信息任务1:对文本区中的内容进行保存和清除操作项目3:设计网报信息登记表任务1:填写信息任务2:建立网报信息录入标签任务3:建立网报中个人工作经历说明文本区任务4:建立网报信息中密码输入文本框任务5:建立网报信息中籍贯列表框任务6:建立网报信息中个人爱好一项任务分析根据项目及任务的描述和要求,对项目的各个任务进行分析,然后总结出完成该任务所需要的知识、技能和主要操作步骤;相关知识点针对各个任务分析阶段得到的知识和技能,并结合本章知识和技能目标对相关知识点进行详细讲解和说明;任务实施该阶段以完成各个任务为目的,教师利用相关知识和技能以演示的方式为学生详细讲解每个任务的完整实现过程;同时,该阶段要求学生进行跟随练习,以加深对知识和技能的理解和掌握;技能拓展在保证学生掌握了各个任务所涉及的基本知识和技能的基础上,再通过介绍一定的附加知识并辅导学生完成指定的“技能拓展任务”,最终使学生对所学知识达到举一反三,融会贯通的学习目的;指导与评价对学生的任务实施过程进行指导,并对其中出现的问题进行总结,给出评价;课后作业 完成课后相关习题;课后分析 主要问题:线程状态的控制;教 案 正 文新课导入与项目展示讨论:大家平时生活和学习中接触到的软件或应用程序基本都属于图形用户界面类型的,讨论此类应用程序有什么主要特征;提问:你所熟悉的图形用户界面中有哪些基本组件构成?运行源程序,为学生演示本章项目中各个任务的实现效果。项目任务分解本章项目可以划分为以下主要任务:项目1:学习建立软件用户界面任务1:感知图形化用户界面任务2:制作“欢迎访问”的小程序任务3:独立显示GUI界面,且其大小可以伸缩任务4:建立可以进行人机交互的界面任务5:建立指定布局的GUI界面任务6:建立边界布局格式的GUI任务7:建立流布局格式的GUI任务8:建立网格布局格式的GUI任务9:建立卡片布局格式的GUI项目2:保存和清除信息任务1:对文本区中的内容进行保存和清除操作项目3:设计网报信息登记表任务1:填写信息任务2:建立网报信息录入标签任务3:建立网报中个人工作经历说明文本区任务4:建立网报信息中密码输入文本框任务5:建立网报信息中籍贯列表框任务6:建立网报信息中个人爱好一项任务1-1:感知图形化用户界面任务分析感受图形人机交互界面,添加按钮控件。相关知识点GUI是Graphical User Interface的简称,即图形化用户界面,准确来说GUI就是屏幕产品的视觉体验和互动操作部分。美观的GUI图形化用户界面,方便用户与计算机的交互。同样在个人应用程序中,也需要提供GUI图形化用户界面。GUI主要由图标、按钮、菜单、标签等组成。任务实施设计过程创建窗体类FirstGUIapp,该类继承于Frame类,并在该窗体中添加按钮控件。代码实现【程序文件:FirstGUIapp.java】(程序代码详见教材)技能拓展【技能拓展任务】建立一个进入“我的空间”的访问页面。任务1-2:制作“欢迎访问”的小程序任务分析制作一个网页,要将该网页嵌入到某一网页中,可以使用Applet小程序。相关知识点java.awt包java.awt包是Java中的几个核心包之一,包含用于创建用户界面和绘制图形图像的相关类和接口;javax.swing包swing包提供了一组“轻量级”组件,swing组件占用的系统资源较少,跨平台特性更好;Applet类Applet是一个容器类,通常把继承Html中运行的小Java程序也称为Applet。Applet作为一个可视容器组件,运行在Html浏览器中,它不能独立显示,早期的Java程序主要是用Applet来做各种网页特效,如波纹等。任务实施代码实现【程序文件:HelloApplet.java】(程序代码详见教材)技能拓展【技能拓展任务】在主网页中嵌入自动更新的“日历”页面。任务1-3:独立显示GUI界面,且其大小可以伸缩任务分析独立显示GUI基本界面,可以使用Frame类,且其默认布局为边界布局管理器可以对界面大小进行伸缩。相关知识点Frame类Frame类是最常用的一个容器类,它可以独立显示,对应一个基本的图形化窗口,其大小可以伸缩,其默认的布局管理器是BorderLayout。任务实施代码实现【程序文件:FrameDemo.java】(程序代码详见教材)技能拓展【技能拓展任务】利用框架类建立校园网站的主页面框架结构。任务1-4:建立可以进行人机交互的界面任务分析进行人机交互的界面可以使用Dialog类。相关知识点Dialog类Dialog类也是一个独立容器类,它对应一个大小固定的对话框,通常用来提示用户或让用户输入/输出数据。任务实施代码实现【程序文件:DialogDemo.java】(程序代码详见教材)技能拓展【技能拓展任务】在网站中嵌入帮助对话框,询问用户是否需要帮助,里面包含“确定”、“取消”两个按钮。任务1-5:建立指定布局的GUI界面任务分析该内容包含在窗体中,且不带有标题栏、菜单栏,可以使用Panel类。相关知识点Panel类Panel容器类不是一个独立的容器类,即它必须放在其他容器中,当然也可以放在另一个Panel中,实现容器的嵌套。需要容器的嵌套是因为可以通过这样的办法实现复杂的布局,其默认的布局管理器是FlowLayout。任务实施代码实现【程序文件:PanelDemo.java】(程序代码详见教材)技能拓展【技能拓展任务】利用Java提供的GUI开发常用类建立腾讯主页的框架布局结构。任务1-6:建立边界布局格式的GUI任务分析将容器组件的空间分为东、南、西、北、中5个部分,使用边界布局管理器进行设置,先定义,再将组件添加至容器。相关知识点BorderLayout边界布局管理器边界布局管理器BorderLayout的作用是在容器中最多放置5个组件。这些组件的位置可能是容器4个边的任意一个,也可能是中心点。每个位置只能有一个组件。如果添加组件到一个已被使用的位置时,原来的组件就会被替换掉。通过指定可选值为east、south、west、north和center的约束条件,就可选择边界。它们都是定义在Borderlayout类中的final static常量。任务实施代码实现【程序文件:BorderLayoutDemo.java】(程序代码详见教材)技能拓展【技能拓展任务】使用BorderLayout边界布局管理器设置校园网中相关的模块布局。任务1-7:建立流布局格式的GUI任务分析组件以一行形式进行排列,可以使用提供的流布局管理器。相关知识点FlowLayout流布局管理器FlowLayout流布局管理器是以行的形式放置组件,当一行放满时,它会自动溢出组件到下一行。一行组件的默认位置是在容器的中间,默认方向是从左到右。FlowLayout类中定义了5种类型为int型的可能行位置选项,它们分别是Left(左)、Right(右)、Center(中)、Leading(头)、Tailing(尾)。其中Leading和Tailing指定行应该对齐于组件边沿,前三个常量排列组件行时的效果如其名字所示。Center选项是默认选项,在默认情况下,一行中的组件以5个单位的距离隔开,若组件太多一行无法显示时,FlowLayout会自动换行继续往右排下去,紧接着的行也是以相同距离隔开。任务实施代码实现【程序文件:FlowLayoutDemo.java】(程序代码详见教材)技能拓展【技能拓展任务】使用FlowLayout流布局管理器设置校园网中相关的模块布局。任务1-8:建立网格布局格式的GUI任务分析组件按对应的行列进行排列,可以使用提供的网格布局管理器。相关知识点GridLayout网格布局管理器网格布局管理器在容器中是以矩形网格管理各种组件。有3种构造函数可创建GridLayout对象。GridLayout() 创建1行1列排列组件的网格布局管理器。GridLayout(int rows, int cols) 创建以rows行,cols列的网格排列组件的网格布局管理器,组件间没有间隔。GridLayout(int rows, int cols, int hgap, int vgap)创建以rows行,cols列的网格排列组件的网格布局管理器,组件间的横向和纵向间距分别是hgap和vgap像素。上面第2和第3个构造函数中,可指定行或列的数量为0(当不能都为0)。任务实施代码实现【程序文件:GridLayoutDemo.java】(程序代码详见教材)技能拓展【技能拓展任务】使用GridLayou网格布局管理器设置校园网中相关的模块布局。任务1-9:建立卡片布局格式的GUI任务分析组件按对应的行列进行排列,可以使用提供的网格布局管理器。相关知识点CardLayout卡片布局管理器卡片布局管理器创建一种组件的栈,组件之间互相叠加。添加到容器的第一个组件在栈的最顶端,所以是可见的,最后添加的组件在最底部。可以构造函数CardLayout()创建CardLayout对象。CardLayout()建立组件间没有水平与垂直间距的、新的CardLayout。CardLayout(int h, int v) 建立组件间水平间距为h、垂直间距为v的、新的CardLayout。任务实施代码实现【程序文件:CardLayoutDemo.java】(程序代码详见教材)技能拓展【技能拓展任务】使用CardLayout卡片布局管理器设置校园网中相关的模块布局。任务2-1:对文本区中的内容进行保存和清除操作任务分析要输入相关内容,需要建立文本区,同时要对文本区的内容进行保存或清除,则需对事件进行处理。相关知识点事件处理机制事件处理的要素:事件源、事件、事件监听和事件服务程序是事件处理;事件的产生及处理过程:事件模型有层次模型和委托模型。层次模型是基于容器的,事件先发送到组件,然后沿容器层次向上传播。没有被组件处理的事件会自动地继续传播到组件的容器。委托模型中,事件被送往产生这个事件的组件,然而,注册一个或多个被称为“监听者“的类取决于每一个组件,这些类包含事件处理器,用来接收和处理这个事件。采用这种方法,事件处理器可以安排在与源组件分离的对象中。“监听者”就是实现了Listener接口的类,事件是只向注册的“监听者”报告的对象,每个事件都有一个对应的监听者接口,规定哪些方法必须在适合接收哪种类型的事件的类中定义。任务实施代码实现【程序文件:EventDemo.java】(程序代码详见教材)技能拓展【技能拓展任务】尝试设计一个QQ登录页面,当点击“登录”后能够进入QQ页面。任务3-1:填写信息任务分析建立对应的窗口布局,并添加相应button组件。相关知识点Button的构造函数Button()建立另一个没有标题的button。Button(String label) 建立一个以label为标题的button。任务实施代码实现【程序文件:ButtonDemo.java】(程序代码详见教材)技能拓展【技能拓展任务】建立QQ登录界面中登录、缩小、关闭按钮。任务3-2:建立网报信息录入标签任务分析建立对应的窗口布局,并增加信息登录标签。相关知识点Label的构造函数Label()建立一个新的Label。Label(String text)以text建立一个新的Label。Label(String text, int align)以text和指定的布局建立一个新的Label。任务实施代码实现【程序文件:LabelDemo.java】(程序代码详见教材)技能拓展【技能拓展任务】建立QQ邮箱登录界面中账号、密码等标签。任务3-3:建立网报中个人工作经历说明文本区任务分析需要输入相关内容,则需建立文本区,并设置其位置。相关知识点TextArea构造函数TextArea()建立一个空的TextArea。TextArea (int r, int c)建立一个指定行数和列数的TextArea。TextArea(String text) 建立一个初始化值为text的TextArea。TextArea(String text, int r, int c)建立一个指定行数和列数并且有初始化值的TextArea。任务实施代码实现【程序文件:TextAreaDemo.java】(程序代码详见教材)技能拓展【技能拓展任务】学习建立信息登记表“备注”一项。任务3-4:建立网报信息中密码输入文本框任务分析密码输入也是文本,但是设置字符数有限,且无需换行,不宜用文本区,应该适用文本框。相关知识点TextField构造函数TextField ()建立一个空的TextField。TextField (int c)建立一个列数为c的TextField。TextField (String text)建立一个初始化值为text的TextField。TextField (String text, int r, int c)建立一个列数为c并且初始化值为text的TextField。任务实施代码实现【程序文件:TextFieldDemo.java】(程序代码详见教材)技能拓展【技能拓展任务】建立登录界面用户名、密码。任务3-5:建立网报信息中籍贯列表框任务分析籍贯是较为固定的几个选项,可以让用户进行选择,可适用列表框。相关知识点List构造函数List ()建立一个空的List。List(int r, Boolean multipleSelections)建立一个r行的是否允许多行选择的List。任务实施代码实现【程序文件:ListDemo.java】(程序代码详见教材)技能拓展【技能拓展任务】建立出生年月列表框。任务3-6:建立网报信息中个人爱好一项任务分析个人爱好可以有多项,列表框的选择仅为一项,可以使用复选框。相关知识点CheckBox构造函数CheckBox ()建立一个空的CheckBox。CheckBox (String label) 建立一个以label为标记的CheckBox。CheckBox (String label, CheckboxGroup,Boolean state) 建立一个以label为标记,属于group组的CheckBox。并设置初始状态为state。任务实施代码实现【程序文件:CheckBoxDemo.java】(程序代码详见教材)技能拓展【技能拓展任务】建立课程选择复选框。 展开更多...... 收起↑ 资源预览