第6章 AWT和Swing组件及事件处理.ppt
《第6章 AWT和Swing组件及事件处理.ppt》由会员分享,可在线阅读,更多相关《第6章 AWT和Swing组件及事件处理.ppt(95页珍藏版)》请在课桌文档上搜索。
1、第6章 AWT/Swing组件及事件处理,6.1 图形用户界面概述6.2 GUI标准组件的使用6.3 Java的事件处理6.4 窗口及菜单设计6.5 图形界面的布局设计6.6 建立对话框,学习提要,掌握常用的GUI标准组件及图形界面的设计方法;掌握JAVA的事件处理机制和常用事件响应代码的编写方法;掌握布局、菜单及对话框的设计方法,6.1 图形用户界面概述,6.1.1 基本概念(1)GUI图形用户界面(Graphics User Interface)使用图形的方式借助菜单、按钮等标准界面元素和鼠标操作,帮助用户和计算机之间进行交互。(2)AWT抽象窗口工具集(abstract window t
2、oolkit)Java中用来生成图形用户界面的类库是java.awt包,它Java中基本包中最大的一个,定义了所有GUI组件类,以及其它用于构造图形界面的类。Sun公司在JDK1.0中就提供了AWT。为了实现跨平台特性,AWT类库中的各种操作被定义成在一个并不存在的“抽象窗口”中进行。,AWT组件的类层次,Component 组件是所有AWT组件的基类,提供了基本的显示和事件处理特征。,(3)Swing GUI组件,在最新的Java2中,javax.swing包被列入Java的基础类库JFC,其中定义的Swing GUI组件相对于java.awt包的各种GUI组件增加了许多功能。Swing组件
3、类 Swing包含250多个类(有些是组件,有些是支持类,组件的名字都以 J 开头),Swing提供了40多个组件,是AWT的4倍,用轻量组件(没有本地对等组件)代替了AWT的重量组件(与本地对等组件相关联)。除模仿AWT组件所提供的功能外,几乎所有的Swing替代组件都有其他一些特性,如Swing按钮可以显示图标和文本,AWT按钮只显示文本。,(4)设计图形界面的步骤,1)根据需要创建界面元素,设计出界面的物理外观;2)定义界面元素对不同事件的响应,实现界面与用户的交互功能.,6.1.2 图形用户界面元素,分三类:容器、控制组件、用户自定义成分。(1)容器 是用来组织其他界面成分和元素的单元
4、,如窗体(form)。主要作用:用容器可以分解图形界面的复杂性。特 点:容器有一定的范围、位置、背景,容器里可以包含许多其他的界面元素,并按一定规则来排列所包含的元素,可以被用来完成某种交互功能,容器还可能被包含在其他容器中。,(2)控制组件(Component),控件组件是图形界面的最小单位,里面不能再包含其他成分。如:命令按钮、文本域、标签等。控件的作用是完成与用户的一次交互,如接受用户指令、向用户显示文本等。,使用控件的步骤:,创建控件对象确定属性布局到容器中注册事件监听者重载事件处理方法。,TextField input=new TextField(6);add(input);inpu
5、t.addActionListener(this);public void actionPerformed(ActionEvent e)if(e.getSource()=input)output.setText(input.getText()+“,欢迎你!”);,6.1.3 用户自定义图形界面成分,用户自定义成分是指利用Java类库中的类及其方法来绘制符合用户特定要求的图形界面成分,也可以将已经存在的图形、动画等加载到当前程序中来。(1)绘制图形 Graphics类绘制直线、各种矩形、多边形、圆和椭圆等。Point类表示一个象素点 Dimension类表示宽和高 Rectangle类表示一个矩
6、形 Polygon类表示一个多边形 Color类表示颜色,(2)显示文字,Java中用一个Font类的对象来表示一种字体显示效果,包括字体类型、字型和字号。Font.PLAIN 正常字型常量 Font.BOLD 粗体 Font.ITALIC 斜体1)创建字体对象Font MyFont=new Font(“TimesRoman”,Font.BOLD,12);2)使用字体对象 g.setFont(MyFont);/Graphics对象 btn.setFont(MyFont);/某个名为btn的按钮对象 可以用getFont()方法返回当前对象使用字体的情况。,(3)控制颜色,Applet中显示的字
7、符串或图形的颜色可以用Color类的对象来控制,每个Color对象代表一种颜色,用户可以直接使用系统定义好的13种颜色常量,也可以通过红、绿、蓝三色比例来创建自己的Color对象。1)Color类的构造函数 public Color(int Red,int Green,int Blue);/每个参数的取值范围在0-255之间。public Color(float Red,float Green,float Blue);/每个参数的取值范围在0-1.0之间。public Color(int RGB);/指明RGB三色的比例,这个参数的0-7比特代表红色的比例,8-15比特代表绿色的比例,16-2
8、3比特代表蓝色的比例。,例:创建自己的颜色:Color blueColor=new Color(0,0,255);g.g.setColor(blueColor);利用系统的颜色常量:g.setColor(Color.cyan);2)GUI控件的颜色设置方法public void setBackground(Color c);/设置背景颜色public Color getBackground();/取得背景颜色public void setForeground(Color c);/设置前景颜色public Color getForeground();/取得前景颜色,(4)显示图象,Java中可以
9、利用Graphics类的drawImage()方法显示图象。显示图象涉及3个方法:1)drawImage(参数1,参数2,参数3)参数1Image对象,可以用系统为Applet类定义的getImage()方法获得。参数2、参数3显示时图象左上角的X.Y坐标2)getImage(参数1,参数2)参数1图象文件所在的URL地址 参数2图象文件的文件名3)getDocumentBase()获取含有该Applet的HTML文件的URL地址。,例:用户界面使用示例TestGraphics.java,import java.awt.*;import java.applet.Applet;public cl
10、ass TestGraphics extends Applet Image myImage;Font myFont=new Font(黑体,Font.BOLD,20);Color myColor=new Color(120,25,180);public void init()myImage=getImage(getDocumentBase(),fys.jpg);,public void paint(Graphics g)g.drawLine(30,5,40,5);/画线g.setColor(Color.blue);/设置字体颜色 g.drawRect(40,10,50,20);/画空长方形 g
11、.setColor(Color.red);setBackground(Color.yellow);/设置背静颜色 g.fillRect(60,30,70,40);/画实体长方形 g.setFont(myFont);g.drawString(大家好!,100,200);g.setColor(myColor);g.drawString(g.getFont().toString(),10,250);g.drawImage(myImage,150,10,this);/显示图片,(5)实现动画效果,用Java实现动画的原理与放映动画片类似,取若干相关的图象或图片,顺序、连续地在屏幕上先显示,后擦除,循环
12、往复就可以获得动画的效果。小结:在设计和实现一个程序的图形用户界面的过程中,绘制用户自定义成分仅完成了部分工作,可以美化用户界面,但无法接收程序运行过程中的用户指令,不能提供与用户的动态交互,还需要通过Java中的事件处理机制来实现。,6.2 GUI标准组件的使用,常用的GUI标准组件AWT(Swing)介绍标签(Label)(J Label)Label有三个构造函数:Label()Label(String)Label(String,int)创建一个带初始字符串及指定对齐方式的标签 0=Label.LEFT、1=Label.RIGHT、2=Label.CENTERvoid setAlignme
13、nt(int)方法用来设置标签对齐方式。,文本域(Textfield)(JTextfield)(JPasswordField 密码框)Textfield有四个构造函数:Textfield()Textfield(int)Textfield(String)Textfield(String,int)带有初始文本及指定长度,恢复密码显示:input2.setEchoChar(char)0);,Textfield对事件的响应,多行文本组件(TextArea)(JTextArea),多行文本组件有五个构造函数:TextArea()/创建一个多行文本框TextArea(int,int)/用指定的行数、列数创
14、建 TextArea(String)/用指定的初始文本创建TextArea(String,int,int)/用指定的初始文本、行数、列数创建TextArea(String,int,int,int)/用指定的初始文本、行数、列数及滚动条创建事件响应与TextField相同。,按钮(Button)(JButton),按钮有两个构造函数:Button()Button(String Lable)/创建一个带标示字符串的按钮,可以改变外观但不改变功能,Button对事件的响应,单击按钮可以引发动作事件(ActionEvent)所在程序要实现ActionListener接口注册监听者 addActionL
15、istener()在实现接口的方法体中可以用e.getSource()方法获取按钮对象也可以用e.getActionCommand()方法获取按钮的标签或事先为该按钮设置的命令名例:Button bt=new Button(“按钮标签”);bt.setActionCommand(“命令名”);public void actionPerformed(ActionEvent e)if(e.getActionCommand()=“按钮标签”),或 e.getSource(),或 命令名,复选框组件(Checkbox)(JCheckbox),复选框有三个构造函数:Checkbox()/不带显示标签Ch
16、eckbox(String)/带一个显示标签Checkbox(String,boolean)/带显示标签和初始状态复选框组件有状态属性,为on/off,默认情况下为off,Checkbox对事件的响应,判断事件源对象:public void itemStateChanged(ItemEvent e)If(e.getItemSelectable()instanceof Checkbox,对比按钮:public void actionPerformed(ActionEvent e)if(e.getSource()=bt1,单选钮组件(JRadioButton),单选钮组件要先用CheckboxGr
17、oup()方法构造一个CheckboxGroup对象,再用Checkbox(String,CheckboxGroup,boolean)方法创建Checkbox对象,如果不同的Checkbox在创建时属于同一个CheckboxGroup,则组成单选钮组。单选钮使用的构造函数:Checkbox(String,CheckboxGroup,boolean)/带显示标签、属于哪个按钮组和初始状态单选钮组件有状态属性,为true/false,创建时指定。,单选钮组件CheckboxGroup对事件的响应,CheckboxGroup类不是java.awt.*包中的类,它是Object的直接子类,所以按钮组不
18、能响应事件,但是按钮组中的每个按钮可以响应ItemEvent类的事件。由于单选按钮组中的每个单选按钮都是Checkbox对象,它们对事件的响应与复选框对事件的响应相同。,下拉列表组件(Choice)(JComboBox),创建下拉列表:,Choice()/创建下拉列表(组合框),下拉列表组件(Choice)对事件的响应,列表组件(List)(JList),创建列表:,List()/创建列表List(int)/以指定的可见行数创建列表List(int,boolean)/指定可见行数和是否允许多项选择,列表组件(List)对事件的响应(注意:双击事件不能覆盖单击事件),滚动条组件(Scrollba
19、r)(JScrollbar),滚动条有三个构造函数:,Scrollbar()/创建一个垂直滚动条Scrollbar(int)/指定方向的滚动条,Scrollbar.HORIZONTAL(水平状)Scrollbar.VERTICAL(垂直状)Scrollbar(int,int,int,int,int)/指定方向、初始值、滚动块大小、最小值、最大值,滚动条组件(Scrollbar)对事件的响应,6.3 Java的事件处理,6.3.1 基本概念 事件处理三要素:事件源、事件类型、事件监听者 事件源:图形用户界面的每个可能产生事件的组件。事件源可以注册监听者对象,并向其发送事件对象。事件类型:Java
20、的所有事件都封装成一个类,这些事件类被集中在java.awt.event包中,所有的事件类都继承了AWTEvent类的一个方法getsSource(),该方法返回所发生事件的对象。事件监听者:不同类型的事件发生后,由事件监听者接收事件并调用相应的事件处理方法。监听者对象:实现了监听者接口的类的实例,具有监听和处理某类事件的功能。,Java的委托事件模型,JAVA的事件处理机制,JDK1.1开始引入了委托事件模型,不同的事件源可产生不同种类的事件,不同的事件由不同的监听者处理。事件发生后,事件源将事件对象发给已经注册的所有监听者;监听者对象随后会根据事件对象内封装的信息,决定自己该如何响应这个事
21、件。,AWTEvent类体系结构图,EventObject,AWTEvent,AdjustmentEvent,WindowEvent,ContainerEvent,FocusEvent,InputEvent,PaintEvent,KeyEvent,MouseEvent,ActionEvent,ItemEvent,ComponentEvent,TextEvent,事件处理过程:一般说来,每个事件类都有一个监听者接口与之对应,而事件类中的每个具体事件类型都有一个具体的抽象方法与之相对应,当具体事件发生时,这个事件将被封装成一个事件类的对象作为实际参数传递给与之对应的具体方法,由这个具体方法负责响应
22、并处理发生的事件。例如:与ActionEvent类事件对应的接口是ActionListener,这个接口定义了抽象方法:public void actionPerformed(ActionEvent e);,凡是要处理ActionEvent事件的类都必须:1)实现ActionListener接口 2)重载actionPerformed()方法 在重载的方法体中,常需要调用参数e的有关方法,如调用e.getSource查明ActionEvent事件的事件源,然后采取相应的措施处理该事件。事件适配器(Adapters):定义Listener时可以继承Adapters类,这样只需要重写自己需要的方法
23、,其他方法不必实现,可以减少不必要的工作量。,6.3.2 动作事件(ActionEvent)的处理,能够触发动作事件的动作有:点击按纽 双击一个列表框中的选项 选择菜单项 在文本框中输入回车 动作事件对应的事件类是ActionEvent类,其主要方法有:(1)public String getActionCommand()获得引发事件的项目信息 例:public void actionPerformed(ActionEvent e)if(e.getActionCommand()=按钮标签),(2)public int getModifiers()当动作是同时与功能键配合使用时,获得引发事件的组
24、合键信息,如:ALT_MASK动作事件对应的事件监听器是 ActionListener,其主要方法是:actionPerformed(ActionEvent e)发生动作事件时被调用实现动作事件的操作过程是:1)注册动作事件监听器 addActionListener(ActionListener)2)实现ActionListener接口的方法:actionPerformed(ActionEvent e),6.3.3 文本事件(TextEvent)的处理,TextEvent类只包含一个事件,即代表文本区域中文本变化的事件TEXT-VALUE-CHANGED,在文本区域中改变文本内容。例如,删除字
25、符、键入字符都将引发这个事件。这个事件比较简单,不需要特别判断事件类型的方法和常量。Java中用于文本处理的基本组件有两种:单行文本框TextField和多行文本区域TextArea,它们都是TextComponent的子类。,例 6-7 TextComponentEvent.java,import java.applet.*;import java.awt.*;import java.awt.event.*;public class TextComponentEvent extends Applet implements TextListener,ActionListener TextFie
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第6章 AWT和Swing组件及事件处理 AWT Swing 组件 事件 处理
![提示](https://www.desk33.com/images/bang_tan.gif)
链接地址:https://www.desk33.com/p-748294.html