第6 章 图形用户界面ppt课件.ppt

上传人:小飞机 文档编号:2105078 上传时间:2023-01-10 格式:PPT 页数:89 大小:452KB
返回 下载 相关 举报
第6 章 图形用户界面ppt课件.ppt_第1页
第1页 / 共89页
第6 章 图形用户界面ppt课件.ppt_第2页
第2页 / 共89页
第6 章 图形用户界面ppt课件.ppt_第3页
第3页 / 共89页
第6 章 图形用户界面ppt课件.ppt_第4页
第4页 / 共89页
第6 章 图形用户界面ppt课件.ppt_第5页
第5页 / 共89页
点击查看更多>>
资源描述

《第6 章 图形用户界面ppt课件.ppt》由会员分享,可在线阅读,更多相关《第6 章 图形用户界面ppt课件.ppt(89页珍藏版)》请在三一办公上搜索。

1、Java面向对象程序设计,第 6 章 图形用户界面,第6章 图形用户界面,6.1 Java抽象窗口工具集6.2 AWT组件6.3 容器6.4 组件布局管理6.5 事件处理6.6 颜色和字体6.7 颜色和字体6.8 Swing简介,6.1 Java抽象窗口工具集,图形用户界面(Graphics User Interface,GUI),是指用图形的方式,借助菜单、按钮等标准界面元素和鼠标操作,帮助用户方便地向计算机系统发出指令,启动操作,并将系统运行的结果同样以图形方式显示给用户。图形用户界面画面生动、操作简单,深受广大用户的喜爱和欢迎,已经成为目前几乎所有应用软件的既成标准。所以学习设计和开发图

2、形用户界面,是应用软件开发员必修的一课。,AWT(Abstract Window Toolkit,抽象窗口工具集)是Java语言提供的用户界面设计工具。AWT的核心思想是把GUI看作是由一系列的组件(Componetn)构成,组件是一个可以以图形化的方式显示在屏幕上并能与用户进行交互的对象,例如一个按钮、一个标签等。组件不能独立地显示出来,必须将组件放在一定的容器才可以显示出来。容器(Container)实际是Component的子类,因此容器类对象本身也是一个组件,具有组件的所有性质,另外还具有容纳其他组件和容器的功能。AWT由java.awt包提供,该包中有许多用来设计用户界面的类和接口,

3、用户在JavaApplication或Applet中进行GUI设计。,AWT组件相关类的层次关系如图6.1所示。,Applet,设计和实现用户图形界面主要包括以下三个方面:,设计组件(Component):包括设计Java.awt包中提供的组件和用户自定义的组件;指定布局(Layout):根据设计需要排列容器内各组件的位置;设计响应事件(Event)。,6.2 AWT组件,组件是构成GUI的基本要素,通过对不同事件的响应来完成和用户的交互或组件之间的交互。组件一般作为一个对象放置在容器内,组件通过容器的add方法加入到容器中。抽象类Component作为Java GUI组件的共同父类,它规定了

4、所有GUI组件的基本特性,该类中定义的方法实现了作为一个GUI部件所应具备的基本功能,,Component类常用属性及对应操作方法,常用AWT组件(1):,常用AWT组件(2):,6.2.1 标签、文本框和命令按钮,1、标签标签的功能是显示单行的字符串,可在屏幕上显示一些提示性,说明性的文字。如在文本框的旁边加上一个标签,说明文本框的功能。标签的构造方法有以下三种:(1)Label()该方法用来创建一个没有显示内容的对象;(2)Label(String str)该方法用来创建一个显示内容为str的对象(3)Label(String str,int alignment)该方法除了用来创建一个显示

5、内容为Label的对象外,还设置了Label的对齐方式。Label的对齐方式有LEFT、CENTER和RIGHT来表示左对齐、居中和右对齐。,标签的常用方法有:,int getAlignment()返回当前的对齐方式;String getName()返回当前对齐的名字;String getText()返回当前对象显示的文本;void setAlignment(int align)设置对齐方式;void setText(String str)设置标签对象显示的内容;,2、文本框,Java中用于处理文本的基本组件有两种:单行文本框TextField和多行文本区域TextArea,用来接受用户的键盘

6、输入。TextField的构造方法及常用方法有:(1)TextField()创建一个默认长度的文本框;(2)TextField(int columns)创建一个指定长度的文本框;(3)TextField(String text)创建一个带有初始文本内容的文本框;(4)TextField(String text,int columns)创建个带有初始文本内容并具有指定长度的文本框;,(5)void setText(String text)设定文本框的内容;(6)void setEchoChar(char c)设定用户输入字符的回显字符,例如输入用户口令时可设定回显字符为*来屏蔽;(7)Strin

7、g getText()获取文本框的内容;(8)void setEditable(boolean e)设置文本框的可编辑性,默认为可编辑;,2、文本框,TextArea类的构造方法及常用方法有:,TextArea()创建一个默认行数和列数的文本区;TextArea(int rows,int columns)创建一个rows行,columns列的文本区;TextArea(String text)创建一个带有初始文本内容的文本区;TextArea(String text,int rows,int columns)创建文本区,初始字符串为text,行数为rows,列数为columns。TextArea

8、(String text,int rows,int clumns,int scrollbar),在上面文本区的基础上增加滚动条,scrollbar取值可以是:SCROLLBARS_HORIZONTAL_ONLY(仅有水平滚动条)、SCROLLBARS_VERTICAL_ONLY(仅有垂直滚动条)、SCROLLBARS_BOTH(垂直,水平滚动条都有)、SCROLLBARS_NONE(没有滚动条);,6 void setText(String text)设置文本区的内容;7 String getText()获取文本区的文本;8 void append(String str)在文本区的尾部添加文本

9、;9 void insert(String str,int position)在指定位置插入文本;10 void setRows(int rows)设定文本框的行数;11 int getRows()返回文本区的行数;12 void setEditable(boolean b)设定文本区的可编辑状态。,3、按钮,Button类的构造方法及常用方法:(1)Button()创建一个没有标题的按钮;(2)Button(String label)创建一个有文字标题的按钮;(3)String getLabel()返回按钮的显示标题;(4)void setLabel(String label)设置按钮上显示

10、的标题。,设计程序运行结果如下图的Applet,6.2.2 单选框和复选框,复选框(Checkbox)用于设置多重选择,可以让用户作出多项选择。单选框又称为选项按钮,是一组按钮,用户只能从中选择一个。复选框和选项按钮的构造方法和主要方法如下:(1)Checkbox()创建个没有标签的复选框;(2)Checkbox(“北京”)创建一个标签为“北京“的复选框;(3)CheckboxGroup()创建选项按钮。(4)String getLabel()返回复选框或单选按钮的标签;(5)CheckboxGroup getCheckboxGroup()返回单选按钮的复选框组;(6)void setChec

11、kboxGroup(CheckboxGroup g)设置单选按钮所属的选项框组;(7)boolean getState()返回复选框或单选按钮的选中状态;(8)void setState(Boolean state)设置复选框或单选框的选中状态;,例:设计程序运行结果如下图的Applet,6.2.3下拉列表框和列表框,1、下拉列表框下拉列表框(Choice)是图形界面中提供选项的常用组件,用户可以看到下拉列表框中的第一个选项和它旁边的箭头按钮,单击箭头按钮时,下拉列表框打开,用户可以在列表框中选择其他选项进行更改。其常用的方法有:(1)void addItem(String item)向列表框

12、中添加选项item;(2)int countItem()返回列表框中的选项个数;(3)String getItem(int index)返回指定下标值的某个选项;(4)int getSelectedIndex()返回被选中的选项的下标值;(5)String getSelectedItem()返回被选中的选项;,(6)void select(int index)选择指定下标值的选项;(7)void select(String item)选择指定的选项;(8)void insert(String item,int index)在下拉列表框中index索引处插入名称为item的选项;(9)void

13、remove(int index)删除下拉列表框中index索引处的选项;(10)removeAll()删除下拉列表框中所有选项。,2、列表框,列表框(List)提供了多个文本选项,所有选项都是可见的,如果选项数目超出了列表框可见的范围,则列表框右边会出现个滚动条,同时,列表框支持多项选择。其构造方法与常用方法有:(1)List()创建一个空列表框;(2)List(int rows)创建一个具有rows行的空列表框;(3)List(int rows,boolean multiple)创建个rows行的空列表框,multiple值为true,则支持多重选择,否则只支持单项选择,默认为false;

14、(4)void delItem(int index)删除列表框中index索引处的选项内容;,(5)String getItem(int index)获取指定位置index索引处的选项内容;(6)String getItems()获取所有选项内容;(7)int getItemCount()获取列表框中共有多少个选项(8)void replaceItem(String item,int index)将index处位置的选项换成item;(9)void setMultipleMode(boolean b)b为true则允许多项选择,否则不允许。,例6.3 列表框应用实例,import java.a

15、wt.*;import java.applet.Applet;public class TestList extends Applet public void init()Label label1=new Label(请选择系别:);Label label2=new Label(中国名牌大学:);Choice c=new Choice();c.add(计算机系);c.add(商学系);c.add(艺术系);c.add(机电系);c.addItem(信息管理系);c.insert(法律系,2);c.select(2);,List l=new List(4);l.add(北京大学);l.add(清

16、华大学);l.add(复旦大学);l.add(浙江大学);l.add(中国海洋大学);l.setMultipleMode(true);add(label1);add(c);add(label2);add(l);程序运行结果如右图所示:,6.3容器,容器是用来组织其他界面成份和元素的单元。一般说来一个应用程序的图形用户界面对应于一个复杂的容器,如一个窗口。这个容器内部将包含许多界面元素,这些界面元素本身也可以是另外一个容器,这个容器再进一步包含它的界面元素,依次类推就构成一个复杂的图形界面系统。,容器的主要作用和特点如下:,容器有一定范围:一般容器都是矩形的,容器范围边界可以用边框框出来,有些则

17、没有可见的标记;容器有一定的位置:这个位置可以是屏幕四角的绝对位置,也可以是相对于其他窗口边框的相对位置;容器中可以包含其他的许多界面成分和元素:当容器被打开显示时,它上面的所有元素也同时显示出来,当容器被关闭和隐藏时,它所包含的元素也一起被隐藏;容器可以按一定的规则来物理地安排它所包含的元素,如这些元素的相对位置关系、它们的前后排列关系等。,Java中GUI提供两种主要的容器类型:Panel类和Window类。这两个类都是抽象类。Window类是可自由停泊的顶层窗口,Window类的两个重要子类是框架类(Frame)和对话框类(Dialog),这两个类者有边框,并且都可以移动、放大、缩小和关

18、闭功能的容器;Panel类是可作为容器容纳其他组件的非顶层容器,它不能独立存在,必须被添加到其他容器中(如Window或Applet)。,从Component类继承的下述成员方法:,public setLocation(int x,int y):移动当前组件到一个新的位置;public setSize(int width,int height):重新设置组件大小;public setBounds(int x,int y,int width,int height):移动并重置当前组件大小。,6.3.1 Frame类,抽象Window类不能实例化,实际程序中经常使用的是其子类Frame。Frame

19、对象显示效果是一个窗口,带有标题,可以由用户重置其大小。在其构造方法中通过String参数指定窗口标题,Frame对象默认尺寸为00像素且不可见,可使用setSize()方法设置窗口大小,使用setVisible(true)方法使之变为可见。Frame默认的布局管理器是BorderLayout,可使用setLayout()方法改变其默认布局管理器。,例:,import java.awt.*;public class TestFrame public static void main(String args)Frame f=new Frame(My Frame Test);f.setSize(2

20、00,150);f.setBackground(Color.BLUE);f.setVisible(true);,程序运行结果如图所示:,6.3.2 Panel类,Panel类可以容纳其他组件,在程序中经常用于布局和定位,它可以采用与所在容器不同的布局管理器,Panel对象默认的布局管理器是FlowLayout,也可使用setLayout()方法改变其默认布局管理器。,例:,import java.awt.*;public class TestPanel public static void main(String args)Frame f=new Frame(My Frame with Pan

21、el);Panel p=new Panel();f.setSize(180,120);f.setBackground(Color.BLUE);f.setLayout(null);/取消布局管理器p.setSize(120,60);p.setBackground(Color.GREEN);f.add(p);f.setVisible(true);,程序运行结果如图6.6所示:,本讲小结:,本讲首先介绍了AWT(抽象窗口工具集)的概念,接着讲述了Java中的基本组件:标签、文本框、命令按钮、单选框、复选框、下拉列表框和列表框,最后介绍了Frame类和Panel类两个容器类的使用。,6.4 组件布局管

22、理,为了使我们生成的图形用户界面具有良好的平台无关性,Java语言提供了布局管理器这个工具来管理组件在容器中的位置,而不使用直接设置组件位置和大小的方式。每个容器都有一个布局管理器,当容器需要对某个组件进行定位或判断其大小尺寸时,会就调用其对应的布局管理器。Java语言中包含的容器布局管理器有:FlowLayout、BorderLayout、GridLayout和CardLayout。,6.4.1 FlowLayout布局管理器,FlowLayout(顺序布局)是最基本的一种布局,是Panel面板及其子类Applet的默认布局方式,前面介绍的例子都使用了默认的顺序布局。这种布局方式将组件依次逐

23、行定位,行内从左到右顺序排列,一行排满后就转到下一行继续排列,直到把所有的组件都显示出来。FlowLayout布局默认对齐方式为居中对齐,不改变组件的大小,按组件原有尺寸显示组件。在顺序布局方式下,由于功能有限,不能很好地控制组件的排列,所以常用在组件较少的情况下,组件较多时,可以使用容器的setLayout方法改变组件布局方式。,6.4.2 BorderLayout布局管理器,BorderLayout(边界布局)是Window、Frame和Dialog的默认布局管理器。BorderLayout把容器分为5个区:North(北区)、South(南区)、East(东区)、West(西区)和Cen

24、ter(中区)五个区域,其方位依据“上北下南,左西右东”的规则,组件只能添加到指定的区域。如不指定组件的加入部位,则默认加入到Center区域。每个区域只能加入一个组件,如加入多个,则先前加入的组件会被遗弃。与FlowLayout不同,在使用BorderLayout布局管理器容器中,组件尺寸也被布局管理器强行控制,即组件与其所在区域的尺寸相同。当BorderLayout型布局容器的尺寸发生变化时,其中各组件的相对位置保持不变,组件的尺寸会随所在区域进行缩放调整。,例:,import java.awt.*;import java.applet.Applet;public class TestBo

25、rderLayout extends Applet Button bN,bS,bW,bE,bC;public void init()BorderLayout layout=new BorderLayout();setLayout(layout);bN=new Button(North);bS=new Button(South);bW=new Button(West);bE=new Button(East);bC=new Button(Center);add(bN,North);add(bS,South);add(West,bW);add(East,bE);add(Center,bC);,程序运

26、行结果如图6.7所示:,6.4.3 GridLayout布局管理器,GridLayout(网格布局)管理器将容器区域划分成规则的若干矩形网格,每个单元格区域大小相同,每个网格可以放置一个组件,组件添加到网格中时,先从左到右添满一行后换行,再从上到下。与BorderLayout布局类型一样,GridLayout型布局中的组件大小被布局管理器强行控制,与网格同等大小,当容器尺寸发生变化时,其中的组件相对位置不变,但大小发生变化。创建网格布局管理器时,可以给出网格的行数和列数。,例:,import java.awt.*;import java.applet.Applet;public class T

27、estGridLayout extends Applet Button b1,b2,b3,b4,b5,b6,b7,b8;public void init()setLayout(new GridLayout(3,4);b1=new Button(button1);b2=new Button(button2);b3=new Button(button3);b4=new Button(button4);b5=new Button(button5);b6=new Button(button6);b7=new Button(button7);b8=new Button(button8);add(new

28、Label(第一格);add(b1);add(b2);add(b3);add(b4);add(new Label(label);add(b5);add(b6);add(b7);add(b8);,程序运行结果如图6.8所示:,6.4.4 CardLayout布局管理器,CardLayout(卡片布局)管理器能够帮助用户处理两个以至更多的组件成员共享同一显示窨,将组件像卡片一样前后依次排列,这种布局在一张卡片中只显示一个组件,因此需要使用某种方法翻阅这些卡片。,使用CardLayout布局常用到以下三个方法:,first():显示布局设置为CardLayout的容器中的第一张卡片;last():显

29、示布局设置为CardLayout的容器中的最后一张卡片;next():显示当前卡片的下一张卡片,例:,import java.awt.*;import java.applet.Applet;public class TestCardLayout extends Applet CardLayout card=new CardLayout();/先创建一个卡片布局管理器对象public void init()setLayout(card);/设定容器的布局方式setFont(new Font(隶书,Font.ITALIC+Font.BOLD,26);/设置字体for(int i=1;i6;i+)a

30、dd(String.valueOf(i),new Label(卡片号为:+i);/card.show(this,String.valueOf(3);/显示卡片号为3的卡片/card.show(this,1);/显示第1张卡片card.last(this);/显示最后一张卡片,即卡片号为5的卡片card.next(this);/显示下一张卡片,程序的运行结果如图6.9所示:,6.4.5 手工布局,Java还允许用户取消容器的默认布局,手工放置各个组件,这种方法比较灵活。如:import java.awt.*;import java.applet.Applet;public class TestL

31、ayoutNull extends Applet Label lbl=new Label(手工布局的例子);TextField txt=new TextField(20);Button btn=new Button(test);Button ok=new Button(确定);public void init()setLayout(null);/取消默认布局,采用手工布局setBackground(Color.BLUE);add(lbl);lbl.setBounds(20,20,100,30);lbl.setBackground(Color.YELLOW);add(txt);txt.setBo

32、unds(20,60,60,20);add(btn);btn.setBounds(100,60,30,20);add(ok);ok.setBounds(80,100,30,20);,程序运行结果如图6.10所示:,本讲小结:,本讲主要讲述了Java中常用的布局管理器:FlowLayout顺序布局管理器、BorderLayout边界布局管理器、GridLayout网络布局管理器、CardLayout卡片布局管理器和手工布局的使用。,6.5 事件处理,事件处理技术是Java用户界面设计中一个十分重要的技术。用户在图形用户界面中输入命令是通过移动鼠标或单击单击特定界面元素来实现的。为了能够接受用户的

33、命令,界面系统首先应该能够识别这些鼠标或键盘的操作并作出相应的反应。通常一个键盘或鼠标的操作会激发一个系统预先定义好的事件,用户只需要设计程序代码定义每个特定事件发生时所对应的响应操作。这些程序代码将在它们对应的事件发生时由系统自动调用。在前面编写的程序中,对按钮等组件进行单击操作,都没有什么反应,就是因为没有为事件编写相应的处理程序。Java.awt.event包中包含了许多用来处理事件的类和接口。,6.5.1 Java事件处理基本概念,1、事件(Event)是系统在捕获用户界面操作过程中产生的代表相应操作的一个数据结构,是用户操作在Java系统内的数字表达,它描述了发生了什么事情。用户与用

34、户界面上的组件交互是通过响应各种事件来实现的,如用户单击了一个命令按钮,意味着一个按钮事件 的发生。2、事件源(Event Source)产生事件的组件,如按钮、文本框等。,3、监听器(Listener)是调用事件处理方法的对象,它对事件源能够进行监听,以便对事件源所发生的事件做出相应的处理。事件源通过调用相应的方法将某个对象作为自己的监听器,如文本框可以调用以下方法注册监听器:addActionListener(监听器);4、事件注册 事件源为了将其上产生的事件传递给监听器接受并处理,应该提供注册和注销事件监听器的方法。这些方法必须遵循下面的设计格式:public void add(List

35、ener)注册监听器便利该事件源上发生的事件能够被监听器Listener接收并处理。如上面调用的方法addActionListener()就是一个事件注册方法。public void remove(Listener)注销监听器便利监听器Listener不能监听到该事件源上发生的事件。,5、监听器接口(事件处理方法)是能够接收、解析和处理事件类对象、实现和用户交互的方法。监听器是一个对象,为了处理事件源发生的事件,监听器会自动调用一个方法来处理事件。Java规定:为了使监听器能够对事件源所发生的事件做出处理,创建该监听器的类必须声名实现相应的接口,即必须在类体中给出该接口中所有方法的方法体。那么

36、当事件源发生事件时,监听器就会自动调用执行被类实现的某个接口方法。,6.5.2 事件处理方法,每当一个事件发生,Java虚拟机就会将事件的消息传递给程序,由程序中的事件处理方法对事件进行处理。如果没有编写事件处理方法,程序就不能和用户交互,前面的程序因为没有编写事件处理方法,所以虽然Java虚拟机通知程序发生了按钮单击事件,但程序中因为没有相应的事件处理方法,把事件忽略了。,6.5.3 事件处理实例,1、单击按钮事件例:import java.awt.*;import java.awt.event.*;import java.applet.Applet;public class Additio

37、n extends Applet implements ActionListener Label label1=new Label(+);Label label2=new Label(=);TextField txt1=new TextField(6);TextField txt2=new TextField(6);TextField txt3=new TextField(8);Button btn=new Button(相加);,public void init()add(txt1);add(label1);add(txt2);add(label2);add(txt3);add(btn);b

38、tn.addActionListener(this);/注册监听器public void actionPerformed(ActionEvent e)int x=Integer.parseInt(txt1.getText();/把获取文本框中的数据并转换为整型int y=Integer.parseInt(txt2.getText();txt3.setText(Integer.toString(x+y);,首先需要导入事件处理的event包,在类Addition声明继承自Applet的同时,引入了一个单击事件监听器ActionListener接口,在程序运行期间可监听发生了什么事件,并负责调用相

39、应的事件处理方法作出响应。在类Addition中实现了接口中的方法actionPerformed(),对按钮单击事件作出了相应的处理。,程序运行结果如图6.11所示:,2、选项事件处理,import java.awt.*;import java.awt.event.*;import java.applet.Applet;public class ItemEventDemo extends Applet implements ItemListenerLabel label1=new Label(爱好:);Label label2=new Label(性别:);String aihao=足球,篮球

40、,上网,购物,钓鱼,小说,音乐;Checkbox cb=new Checkbox7;CheckboxGroup group=new CheckboxGroup();Checkbox male=new Checkbox(男,group,true);Checkbox female=new Checkbox(女,group,false);TextArea ta=new TextArea(6,30);,public void init()add(new Label(你的选择是:);add(ta);add(label1);for(int i=0;i7;i+)cbi=new Checkbox(aihaoi

41、);add(cbi);cbi.addItemListener(this);add(label2);add(male);add(female);male.addItemListener(this);female.addItemListener(this);public void itemStateChanged(ItemEvent e)ta.append(你选择了:+e.getItem()+n);,程序运行结果如图6.12所示:,3、多重监听器,由于事件源可以产生多种不同类型的事件,因而可以注册(触发)多种不同类型的监听器。需要注意以下两点:针对同一事件源的同一种事件也可以注册多个监听器。同一个

42、监听器对象可以被同时注册到多个不同的事件源上。,例:,import java.awt.*;import java.awt.event.*;import java.applet.Applet;public class TestMultiListener extends Applet implements MouseListener,MouseMotionListener TextField tf=new TextField(30);Label lbl=new Label(请按下鼠标进行划线);int x1,y1,x2,y2;public void init()addMouseListener(t

43、his);addMouseMotionListener(this);setLayout(new BorderLayout();add(lbl,North);add(tf,South);public void mouseEntered(MouseEvent e)tf.setText(鼠标已进入Applet);public void mouseExited(MouseEvent e)tf.setText(鼠标已离开Applet);,public void mouseClicked(MouseEvent e)public void mousePressed(MouseEvent e)x1=e.get

44、X();y1=e.getY();tf.setText(鼠标当前位置是(+x1+,+y1+);public void mouseReleased(MouseEvent e)public void mouseDragged(MouseEvent e)x2=e.getX();y2=e.getY();repaint();public void mouseMoved(MouseEvent e)public void paint(Graphics g)g.drawLine(x1,y1,x2,y2);,本程序可以使用鼠标画线。首先在起点位置按下鼠标,此时将发生一个mousePressed事件,所以,程序中使

45、用了mouseListener接口,在相应的处理方法中,将鼠标位置保存x1和y1中。拖拽鼠标时,将连续发生mouseDragged事件,所以,程序使用了mouseMotionListener接口,在这个事件接口的处理方法中,另一鼠标位置被保存到x2和y2,然后调用repaint()方法重画直线。只要确定起点坐标和终点坐标,即可使用图形对象画线的方法g.drawLine(x1,y1,x2,y2)画出直线。鼠标的位置是由mouseEvent类的方法e.getX()和e.getY()得到的。这样,鼠标不断移动,直线不断被重画出来,最后放开鼠标,直线就固定下来了。addMouseListener()和

46、addMouseMotionListener()语句前面没有组件对象,表示事件源为整个容器,即对所有的区域进行监控。,6.5.4 事件适配器,为简化编程,针对大多数事件监听器接口定义了相应的实现类,即事件适配器类Adapter。在Adapter类中,实现了相应监听器接口中所有的方法,但都是空方法,不做任何事情。然后程序员在定义监听器类时就可以继承事件适配器类,并只重写所需要的方法。,一个事件适配器类WindowAdapter的定义:,Public abstract class WindowAdapter implements WindowListenerpublic void windowOp

47、ened(WindowEvent e)public void windowClosing(WindowEvent e)public void windowClosed(WindowEvent e)public void windowIconified(WindowEvent e)public void windowDeiconified(WindowEvent e)public void windowActivated(WindowEvent e)public void windowDeactivated(WindowEvent e),常用的事件适配器类有:,ComponentAdapter(

48、组件事件适配器)ContainerAdapter(容器事件适配器)FocusAdapter(焦点事件适配器)KeyAdapter(键盘事件适配器)MouseAdapter(鼠标事件适配器)MouseMotionAdapter(鼠标移动事件适配器)WindowAdapter(窗口事件适配器),例:事件监听器接口和适配器的对比,import java.awt.*;import java.awt.event.*;public class TestListener public static void main(String args)Frame f=new Frame(Java WindowTest

49、);f.setSize(200,150);MyListener listener=new MyListener();f.addWindowListener(listener);f.setVisible(true);,class MyListener implements WindowListenerpublic void windowOpened(WindowEvent e)public void windowClosing(WindowEvent e)System.exit(1);public void windowClosed(WindowEvent e)public void windo

50、wIconified(WindowEvent e)public void windowDeiconified(WindowEvent e)public void windowActivated(WindowEvent e)public void windowDeactivated(WindowEvent e),程序运行时,用户鼠标单击其GUI窗口右上角的关闭按钮可以关闭窗口,退出当前程序。其中,System类的exit(int status)方法可以终止当前正在运行的Java虚拟机。参数satus取值为0表示JVM正常结束,非0表示非正常结束。,6.5.5 内部类和匿名类在Java事件处理中的

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号