第9章 GUI教学设计.docx
- 文档编号:27741970
- 上传时间:2023-07-04
- 格式:DOCX
- 页数:16
- 大小:121.57KB
第9章 GUI教学设计.docx
《第9章 GUI教学设计.docx》由会员分享,可在线阅读,更多相关《第9章 GUI教学设计.docx(16页珍藏版)》请在冰豆网上搜索。
第9章GUI教学设计
传智播客
《Java基础入门》
教学设计
课程名称:
Java基础入门
授课年级:
2014年级
授课学期:
2014学年第一学期
教师姓名:
某某老师
2014年02月09日
课题名称
第9章GUI
计划学时
6课时
内容分析
GUI全称是GraphicalUserInterface,就是应用程序提供给用户操作的图形界面,包括窗口、菜单、按钮、工具栏和其它各种图形界面元素。
Java中针对GUI设计提供了丰富的类库,这些类分别位于java.awt和javax.swing包中。
本章针对AWT和Swing进行详细的讲解。
教学目标及基本要求
要求学生了解GUI开发的相关原理和技巧,掌握AWT事件处理、布局管理器、AWT绘图,熟悉Swing组件的使用。
重点及措施
教学重点:
AWT事件处理、布局管理器、Swing组件的使用
难点及措施
教学难点:
AWT事件处理、布局管理器、Swing组件的使用
教学方式
教学采用教师课堂讲授为主,使用教学PPT讲解
教
学
过
程
第一课时
(AWT概述、事件处理机制、事件适配器、用匿名内部类实现事件监听事件处理)
AWT概述
✧AWT组成
AWT是用于创建图形用户界面的一个工具包,它提供了一系列用于实现图形界面的组件。
在JDK中针对每个组件都提供了对应的Java类,如下图所示:
✧Window
Window类是不依赖其它容器而独立存在的容器,它有两个子类,分别是Frame类和Dialog类。
如下图所示:
Frame示例Dialog示例
✧Panel
Pane容器只能存在其它容器(Window或其子类)中,一个Panel对象代表了一个长方形的区域,在这个区域中可以容纳其它组件,下图是一个Panel组件:
事件处理机制
事件处理机制专门用于响应用户的操作,在学习如何使用AWT事件处理机制之前,首先介绍几个比较重要的概念,具体如下所示:
●事件对象(Event):
封装了GUI组件上发生的特定事件。
●事件源(组件):
事件发生的场所,通常就是产生事件的组件。
●监听器(Listener):
负责监听事件源上发生的事件,并对各种事件做
出响应处理的对象(对象中包含事件处理器)。
●事件处理器:
监听器对象对接收的事件对象进行相应处理的方法。
事件适配器
JDK提供了一些适配器类,它们是监听器接口的默认实现类,这些实现类中实现了接口的所有方法。
程序可以通过继承适配器类来达到实现监听器接口的目的。
例如,定义一个继承适配器类WindowAdapter的类MyWindowAdapter,如果要实现关闭窗口的功能,需要对windowClosing()方法进行重写。
用匿名内部类实现事件处理
实际开发中,经常通过匿名内部类来创建事件监听器对象,针对所发生的事件进行处理。
例如,为窗口添加一个具有点击事件的按钮,该按钮用于退出程序,具体的实现代码如下所示:
importjava.awt.*;
importjava.awt.event.*;
publicclassExample04{
publicstaticvoidmain(String[]args){
Framef=newFrame("我的窗体!
");
f.setSize(400,300);
f.setLocation(300,200);
f.setVisible(true);
Buttonbtn=newButton("EXIT");//创建按钮组件对象
f.add(btn);//把按钮对象加载到窗口上
//用内部类的方式为按钮组件注册监听器
btn.addMouseListener(newMouseAdapter(){
publicvoidmouseClicked(MouseEvente){
System.exit(0);
}
});
}
}
当按钮被点击时,会把点击事件作为对象传递给事件监听器,作出退出程序的处理。
第二课时
(窗体事件、鼠标事件、键盘事件和动作事件、布局管理器)
窗体事件
当对窗体进行操作时,比如窗体的打开、关闭、激活、停用等,这些动作都属于窗体事件,JDK中提供了一个类WindowEvent用于表示这些窗体事件。
鼠标事件
在图形用户界面中,用户会经常通过鼠标来进行选择、切换界面等操作,
这些操作被定义为鼠标事件,其中包括鼠标按下、鼠标松开、鼠标单击等。
鼠标事件使用MouseEvent类表示,处理鼠标事件需要通过实现MouseListener接口定义监听器,也可以继承适配器MouseAdapter类来实现。
键盘事件
例如键盘按下、释放等,这些操作被定义为键盘事件。
键盘事件使用KeyEvent类表示,处理键盘事件的监听器对象需要实现KeyListener接口或者继承KeyAdapter类。
动作事件
动作事件只是表示一个动作发生了,不需要关心使用哪种方式对文件进行关闭,只要是对关闭按钮进行操作,即触发了动作事件。
动作事件用ActionEvent类表示,处理ActionEvent事件的监听器对象需要实现ActionListener接口。
布局管理器
组件不能单独存在,必须放置于容器当中,而组件在容器中的位置和尺寸是由布局管理器来决定的。
每个容器在创建时都会使用一种默认的布局管理器,在程序中可以通过调用容器对象的setLayout()方法设置布局管理器,通过布局管理器来自动进行组件的布局管理。
✧FlowLayout
FlowLayout(流式布局管理器)下,容器会将组件按照添加顺序从左向右放置。
到达边界时,会自动将组件放到下一行的开始位置。
FlowLayout有三个构造方法,具体如下:
方法声明
功能描述
FlowLayout()
组件默认居中对齐,水平、垂直间距为5个单位
FlowLayout(intalign)
指定组件的对齐方式,水平、垂直间距为5个单位
FlowLayout(intalign,inthgap,intvgap)
指定组件的对齐方式和水平、垂直间距
下列是一个FlowLayout布局管理器的示例:
✧BorderLayout
BorderLayout(边界布局管理器)将容器划分为五个区域,分别是东(EAST)、南(SOUTH)、西(WEST)、北(NORTH)、中(CENTER)。
BorderLayout布局的效果如下图所示。
✧GridLayout
GridLayout(网格布局管理器)使用纵横线将容器分成n行m列大小相等的网格,每个网格中放置一个组件。
✧GridBagLayout
GridBagLayout(网格包布局管理器)与GridLayout布局管理器类似,不同的是,它允许网格中的组件大小各不相同,而且允许一个组件跨越一个或者多个网格。
使用GridBagLayout布局管理器的关键在于GridBagConstraints对象,它是控制容器中每个组件布局的核心类。
GridBagConstraints的常用属性如下所示:
●gridx和gridy:
用于设置组件左上角所在网格的横向和纵向索引。
●gridwidth和gridheight:
用于设置组件横向、纵向跨越几个网格。
●fill:
用于设置是否及如何改变组件大小。
●weightx和weighty:
设置组件在容器中的水平方向和垂直方向的权重。
需要注意的是,如果希望组件的大小随着容器的增大而增大,必须同时设置GridBagConstraints对象的fill属性和weightx、weighty属性。
✧CardLayout
卡片布局管理器(CardLayout)将界面看做一系列卡片,在任何时候只有其中一张卡片是可见的,这张卡片占据容器的整个区域。
第三课时
(AWT绘图、JFrame、JDialog和中间容器)
AWT绘图
✧Graphics类
在java.awt包中专门提供了一个Graphics类,它相当于一个抽象的画笔,
其中提供了各种绘制图形的方法,使用Graphics类的方法就可以完成在组件上绘制图形。
Graphics的常用方法如下所示:
●setColor()用于指定上下文颜色,方法中接收一个Color类型的参数。
●setFont()用于指定上下文字体,方法中接收一个Font类型的参数。
●drawRect()和drawOval()方法用于绘制矩形和椭圆形的边框,
●fillRect()和fillOval()用于使用当前颜色填充绘制完成的矩形和椭圆形。
●drawString()用于绘制一段文本,第一个参数str表示绘制的文本内
容,第二个和第三个参数x、y为绘制文本的左下角坐标。
Swing简介
大部分的Swing组件都是JComponent类的直接或者间接子类,而JComponent类是AWT中java.awt.Container的子类,接下来通过下图来描述AWT和Swing大部分组件的关联关系:
JFrame
JFrame是一个独立存在的顶级窗口,不能放置在其它容器之中,Jframe
支持通用窗口所有的基本功能,例如窗口最小化、设定窗口大小等等。
通过一个案例演示JFrame的效果:
publicExample15(){
this.setTitle("JFrameTest");
this.setSize(200,300);
//定义一个按钮组件
JButtonbt=newJButton("按钮");
//设置流式布局管理器
this.setLayout(newFlowLayout());
//添加按钮组件
this.add(bt);
//设置点击关闭按钮时的默认操作
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setVisible(true);
}
运行结果:
JFrame类和Frame类最大的区别在于,JFrame类提供了关闭窗口的功能。
JDialog
JDialog对话框可分为两种:
模态对话框和非模态对话框。
所谓模态对话
框是指用户需要等到处理完对话框后才能继续与其它窗口交互,而非模态对话框允许用户在处理对话框的同时与其它窗口交互。
Jdialog常用的构造方法如下所示:
方法声明
功能描述
JDialog(Frameowner)
创建非模态的对话框
JDialog(Frameowner,Stringtitle)
创建具有指定标题的非模态对话框
JDialog(Frameowner,booleanmodal)
创建一个有指定模式的无标题对话框
中间容器
中间容器不能单独存在,只能放置在顶级窗口中。
常见的中间容器有两种:
●Jpanel:
它是一个无边框,不能被移动、放大、缩小或者关闭的面板,它的默认布局管理器是FlowLayout。
也可以使用JPanel带参数的构造函数或者它的setLayout()方法为其制定布局管理器。
●JscrollPane:
JScrollPane是一个带有滚动条的面板容器,而且这个面板只能添加一个组件,如果想往JScrollPane面板中添加多个组件,应该先将组件添加到JPanel中,然后将JPanel添加到JScrollPane中。
第四课时
(文本组件、按钮组件、JcomboBox、菜单组件)
文本组件
✧JTextComponent
文本组件用于接收用户输入的信息或向用户展示信息,其中包括文本框(JTextField)、文本域(JTextArea)等,它们都有一个共同父类JtextComponent。
JtextComponent提供了文本组件常用的方法,如下表所示:
方法描述
功能说明
StringStringgetText()
返回文本组件中所有的文本内容
StringgetSelectedText()
返回文本组件中选定的文本内容
voidselectAll()
在文本组件中选中所有内容
voidsetEditable()
设置文本组件为可编辑或不可编辑
voidsetText(Stringtext)
设置文本组件的内容
voidreplaceSelection(Stringcontent)
用给定的内容替换当前选定的内容
✧JTextField
JTextField称为文本框,它只能接收单行文本的输入。
创建一个文本框,示例代码如下:
inputField=newJTextField(20);
获取输入的文本信息,示例代码如下:
Stringcontent=inputField.getText();
将输入的文本域内容置为空,示例代码如下:
inputField.setText("");
✧JTextArea
JTextArea称为文本域,它能接收多行的文本的输入,使用JTextArea构造
方法创建对象时可以设定区域的行数、列数。
创建一个文本域,示例代码如下:
chatContent=newJTextArea(12,34);
设置文本域不可编辑,示例代码如下:
chatContent.setEditable(false);
向文本域添加内容,示例代码如下:
chatContent.append("向文本域添加内容");
按钮组件
✧JCheckBox
JCheckBox组件被称为复选框,它有选中(是)/未选中(非)两种状态。
如果复选框有多个,则用户可以选中其中一个或者多个。
创建JCheckBox对象的常用的构造方法如下表所示:
方法描述
功能说明
JCheckBox()
创建一个没有文本信息,初始状态未被选中的复选框
JCheckBox(Stringtext)
创建一个带有文本信息,初始状态未被选定的
复选框
JCheckBox(Stringtext,booleanselected)
创建一个带有文本信息,并指定初始状态(选中/未选中)的复选框。
✧JRadionButton
JRadioButton组件被称为单选按钮,与JCheckBox复选框不同的是,单选按钮只能选中一个。
创建JRadioButton对象常见的构造方法如下所示:
方法描述
功能说明
JRadioButton()
创建一个没有文本信息、初始状态未被选中的单选
JRadioButton(Stringtext)
创建一个带有文本信息、初始状态未被选定的单选框
JRadioButton(Stringtext,booleanselected)
创建一个具有文本信息,并指定初始状态(选中/未选中)的单选框
JComboBox
JComboBox组件被称为组合框或者下拉列表框,它将所有选项折叠收藏在
一起,默认显示的是第一个添加的选项。
当用户点击组合框时,会出现下拉式的选择列表,用户可以从中选择其中一项并显示。
JComboBox常用方法有:
●voidaddItem(ObjectanObject):
为组合框添加选项
●voidinsertItemAt(ObjectanObject,intindex):
在指定的索引处插入选项
●ObjctgetItemAt(intindex):
返回指定索引处选项,第一个索引为0
●intgetItemCount():
返回组合框中选项的数目
●ObjectgetSelectedItem():
返回当前所选项
●voidremoveAllItems():
删除组合框中所有的选项
●voidremoveItem(Objectobject):
从组合框中删除指定选项
●voidremoveItemAt(intindex):
移除指定索引处的选项
●voidsetEditable(booleanaFlag):
设置组合框的选项是否可编辑,aFlag为true则可编辑,反之则不可编辑
菜单组件
✧下拉式菜单
创建下拉式菜单需要使用三个组件:
JMenuBar(菜单栏)、JMenu(菜单)和JMenuItem(菜单项),以记事本为例,这三个组件在菜单中对应的位置如下图所示:
(1)JMenuBar:
JMenuBar表示一个水平的菜单栏,它用来管理菜单,不参与同用户的交互式操作。
(2)JMenu:
JMenu表示一个菜单,它用来整合管理菜单项。
(3)JMenuItem:
JMenuItem表示一个菜单项,它是菜单系统中最基本的组件。
✧弹出式菜单
在Java的Swing组件中,弹出式菜单用JPopupMenu表示。
JpopupMenu
通过调用add()方法添加JMenuItem菜单项,但它默认是不可见的,如果想要显示出来,则必须调用它的show(Componentinvoker,intx,inty)方法。
第五课时
上机练习1总结,测试题)
1、总结本章内容
2、通过题库发放相关测试题,检查学生掌握情况。
3、上机练习:
针对本章中需要重点掌握的知识点,以及在程序中容易出错的内容进行练习,通过上机练习可以考察同学对知识点的掌握情况,对代码的熟练程度。
上机一:
(考察知识点为AWT绘图)
请按照以下要求设计一个验证码窗口
要求如下:
1)创建一个类YzmPanel绘制验证码,验证码背景为灰色,背景上干扰点为蓝色,验证码为绿色。
2)验证码为四个整数阿拉伯数字。
3)将YzmPanel画板放在Frame窗口中央。
第六课时
上机练习2总结,测试题)
上机一(考察知识点为Swing组件的使用)
请按照以下要求设计一个用户聊天界面
要求如下:
1)用Swing组件设计界面,创建类Swing
2)创建一个文本域,一个文本框,一个按钮(发送),文本框前有描述文字:
“我要发言”。
3)文本域不可编辑,点击发送按钮可将文本框中的内容复制到文本域中
4)如果文本框中内容为空,提示“发送信息不能为空,请重新输入”
思考题和习题
见教材第9章后的习题
教
学
后
记
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第9章 GUI教学设计 GUI 教学 设计