Java语言程序设计实用教程第三版课件及代码第十三讲_第1页
Java语言程序设计实用教程第三版课件及代码第十三讲_第2页
Java语言程序设计实用教程第三版课件及代码第十三讲_第3页
Java语言程序设计实用教程第三版课件及代码第十三讲_第4页
Java语言程序设计实用教程第三版课件及代码第十三讲_第5页
已阅读5页,还剩65页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、SISE Java语言程序 设计实用教程 Java语言程序设计实用教程 SISE Java语言程序 设计实用教程 第13讲 图形用户界面 SISE Java语言程序 设计实用教程 3 本章学习要点: l识别用户界面屏幕的组件以及主要的类 l理解布局管理器,在用户接口上组织组 件 l理解事件监听器,理解委派事件模型 l掌握Java图形用户界面开发方法 SISE Java语言程序 设计实用教程 13.1 图形用户界面组件 SISE Java语言程序 设计实用教程 图形用户界面GUI (见P349图13-1) l至今为止所编写的Java程序只能从键盘输入,在控制 台屏幕上显示结果。 l图形用户界面(

2、GUI,Graphical User Interface)是 为应用程序提供一个图形化的界面,程序通过GUI与用 户交互,GUI能使一个应用程序具有与众不同的“外观” 与“感觉”,是目前应用程序大多数是采用的方式。 WinUI:标准的MS Windows或X-Windows的应用系统,应 用使用来自操作系统的GUI元素和其它加入的元素 WebUI:Web应用系统,基于浏览器操作 SISE Java语言程序 设计实用教程 Java程序图形界面的坐标设置程序图形界面的坐标设置 原点(0,0) X轴 Y轴 SISE Java语言程序 设计实用教程 用户图形接口AWT l AWT(Abstract W

3、indow Toolkit)是一个独立平台的 窗口工具组件集,它依赖于对等组件(Peer),而对 等组件是一个本地本地GUI组件组件,由AWT类管理。AWT的 作用是给用户提供基本的界面组件,如按钮、列表框、 菜单等。 l AWT最初只包括与本地对等组件相关联的组件,称为称为 重量组件(重量组件(Heavyweight Component),这些组件 在它们自己的本地不透明窗口中绘制,用AWT创建的 应用外观在不同的操作系统平台上是不同外观在不同的操作系统平台上是不同。 SISE Java语言程序 设计实用教程 用户图形接口Swing l Java基类(Java Foundation Clas

4、ses,JFC)是 关于GUI组件和服务的完整集合,主要由5个API构 成:AWT、Swing、Java 2D、Drag and Drop、 Accessibility l Swing是建立在AWT基础之上的,它利用了AWT的 底层组件,包括图形、颜色、字体、工具包和布局 管理器等。使用使用AWT最好的部分来建立一个新的最好的部分来建立一个新的 轻量组件集,而丢弃了轻量组件集,而丢弃了AWT中有问题的重量组件中有问题的重量组件 部分部分。 l 通过引入新特性和丰富的功能,Swing提供了比提供了比 AWT更全面的组件集合。更全面的组件集合。Swing API是围绕实现 AWT各个部分的API构

5、建的,这保证了所有早期的 AWT组件仍然可以使用。 SISE Java语言程序 设计实用教程 JFC的两个特性 l javax.swing.plaf:提供一个接口和许多抽象类, Swing 用它们来提供自己的可插入外观功能可插入外观功能。例如可 用提供本地操作系统的外观,在Windows上执行应用, 看上去像是专为Windows环境定制,其它Linux、 UNIX也类似。 l 拖拽与放置拖拽与放置(Drag-and-Drop):把数据从源 转变到目 标。源和目标可以是两个不同应用的控件,还可在剪 贴板之间来回传递数据。java.awt.dnd和 java.awt.datatransfer包可用

6、于拖拽与放置操作 SISE Java语言程序 设计实用教程基本概念 l组件组件(Component):可视化控件,例如文本框、复 选框、列表框、按钮等称为组件,是是 Java的图形用户的图形用户 界面的最基本组成部分界面的最基本组成部分,组件不能独立地显示出来, 必须将组件放在一定的容器中才可以显示出来 l容器容器(Container):容器是一种特殊的组件,一种能 够容纳其他组件或容器的组件。 每个组件继承它的父容器的性质,如字体、颜色 容器控制存放在其中的组件的位置 l布局管理器布局管理器(Layout Manager):为了使图形用户界 面具有良好的平台无关性,提供了专门用来管理组件 在

7、容器中的布局的工具。 SISE Java语言程序 设计实用教程 Java常用控件介绍 Textbox文本框,接收单行字符串输入 TextArea文本区,接收多行字符串的输入 Push button按钮,触发一系列动作 Label标题,在容器上显示静态文本 Check box复选框,接收yes/no值的数据,可 多选 Radio button单选按钮,只允许从一组选项中选 择一个 Combo box下拉列表框,只允许单选,可输入 新值 List box列表框,允许多选,不可输入新值 SISE Java语言程序 设计实用教程 Swing组件组件基本控制基本控制 Buttons List Menu

8、Slider Text fields Combo box SISE Java语言程序 设计实用教程 Swing组件组件信息显示信息显示 Label Progress barTool tip SISE Java语言程序 设计实用教程 Swing组件组件可编辑格式化信息显示可编辑格式化信息显示 Color chooser Table File chooser TextTree SISE Java语言程序 设计实用教程 Swing程序举例程序举例 import javax.swing.*; public class HelloWorldSwing public static void main(St

9、ring args) JFrame frame = new JFrame(HelloWorldSwing); final JLabel label = new JLabel(Hello World); frame.getContentPane().add(label); frame.addWindowListener(new WindowAdapter() public void windowClosing(WindowEvent e) System.exit(0); ); frame.pack(); frame.setVisible(true); SISE Java语言程序 设计实用教程 S

10、wing应用程序基本结构应用程序基本结构 l引入引入Swing 包包: import javax.swing.import javax.swing.* *; ; import java.awt.import java.awt.* *; ; import java.awt.event. import java.awt.event.* *; ; l选择选择Look panel.add(label) ;/将标签加入容器将标签加入容器 SISE Java语言程序 设计实用教程 文本框(JTextField) l 文本框文本框(JTextField) q显示单行的文本信息显示单行的文本信息 qJText

11、Field extends JTextComponent l 密码框密码框(JPasswordField) q输入的字符显示为输入的字符显示为“*” l 用法举例:用法举例:JTextField textobj=new JTextField(10);10指定文本域的长度指定文本域的长度 panel.add(textobj); textobj.setText(“yyyy-mm-dd”); String date=textobj.getText(); SISE Java语言程序 设计实用教程 按钮(JButton) l 当鼠标左键单击按钮组件时,能触发特定的事当鼠标左键单击按钮组件时,能触发特定的

12、事 件件 l 在在Java中中, 广义的按钮包括广义的按钮包括: q命令式按钮命令式按钮(JButton) q复选框复选框(JCheckBox) q单选按钮单选按钮(JRadioButton) 用法举例:用法举例:CheckboxGroup cbg=new CheckboxGroup(); Checkbox check1=new Checkbox(“check1,cbg,true); Checkbox check2= new Checkbox(“check2,cbg,false); panel.add(check1); panel.add(check2); SISE Java语言程序 设计实用

13、教程 组合框(JComboBox) l 组合框组合框(JComboBox) q可以从下拉式的列表框中选取其中的列表项可以从下拉式的列表框中选取其中的列表项 q有时也称为下拉框有时也称为下拉框(drop-down list) l 类类JComboBox中的方法中的方法 qgetSelectedIndex( ) q返回当前被选中的项返回当前被选中的项 qsetMaximumRowCount(n) q设置最多显示列表项的项数设置最多显示列表项的项数 q滚动条滚动条(Scrollbar)会自动加上会自动加上 SISE Java语言程序 设计实用教程 滑动条(JSlider) l 滑动条滑动条(JSli

14、der)提供了以图形方式进行数值选取提供了以图形方式进行数值选取 的功能。的功能。 l 可以用来表示程序执行的进度情况。可以用来表示程序执行的进度情况。 SISE Java语言程序 设计实用教程 ljava.awt.Container是Component的子类,一个容器可以 容纳多个组件,并使它们成为一个整体。容器可以简化 图形化界面的设计,以整体结构来布置界面。所有的容 器都可以通过add()方法向容器中添加组件。 lSwing的容器分顶层容器和其它容器,一下为三个顶层 组件: 容器(Container)技术介绍 Applet DialogFrame SISE Java语言程序 设计实用教程

15、 Swing组件组件通用容器通用容器 Panel Scroll paneSplit pane Tool barTabbed pane SISE Java语言程序 设计实用教程框架(JFrame) l 类类 JFrame 是是java.awt.Frame的子类的子类 l 在在Swing的组件中的组件中, JFrame 并不全是由并不全是由Java编写的编写的 q是一种与平台关系比较密切的组件是一种与平台关系比较密切的组件(Heavyweight component) java.lang.Object | +-java.awt.Component | +-java.awt.Container |

16、+-java.awt.Window | +-java.awt.Frame | +-javax.swing.JFrame SISE Java语言程序 设计实用教程 设置窗口容器设置窗口容器 lJFrame类似于类似于Frame ,JFrame是是AWT中中Frame的子类。的子类。 l不能直接向不能直接向JFrame中加入组件,中加入组件,而要向而要向JFrame的的 content pane或向另外提供的新的或向另外提供的新的content pane中增加组件。中增加组件。 =content pane中包含除了中包含除了menu bar之外的所有组件。之外的所有组件。 getContentPa

17、ne() 获取获取JFrame的的content pane; setContentPane() 设置设置content pane SISE Java语言程序 设计实用教程 面板(JPanel) q一种中间容器,用来组成其它组件一种中间容器,用来组成其它组件 q可以添加各种组件可以添加各种组件(包括面板组件包括面板组件) q面板面板(JPanel)的大小由它所包含的组件决定的大小由它所包含的组件决定 q当组件个数增加,面板当组件个数增加,面板(JPanel)也会随之而增大也会随之而增大 SISE Java语言程序 设计实用教程 设置设置Swing组件组件 frame = new JFrame(.

18、); button = new JButton(.); label = new JLabel(.); pane = new JPanel(); pane.add(button); pane.add(label); frame.getContentPane().add(pane,BorderLayout.CENTER); SISE Java语言程序 设计实用教程 建立建立Swing GUI l Swing包中定义了两类组件:包中定义了两类组件: 顶层容器(顶层容器(JFrame,JApplet,JWindow,JDialog) 轻型组件(轻型组件(J开头的所有组件,如开头的所有组件,如 JBut

19、ton,JPanel,JMenu等)等) l一般如果使用一般如果使用Swing组件,则程序中只使用组件,则程序中只使用Swing组件组件 和和Swing容器。容器。 l Swing组件可以加入到一个与顶层容器相关的组件可以加入到一个与顶层容器相关的content pane中,而不能直接加入到顶层容器中。中,而不能直接加入到顶层容器中。 SISE Java语言程序 设计实用教程 13.2 布局管理器 SISE Java语言程序 设计实用教程布局管理器布局管理器-LayoutManager lJava为了实现跨平台的特性并且获得动态的布局效果,为了实现跨平台的特性并且获得动态的布局效果, Java

20、将容器内的所有组件安排给一个将容器内的所有组件安排给一个“布局管理器布局管理器”负负 责管理,如:责管理,如:排列顺序,组件的大小、位置排列顺序,组件的大小、位置,当窗口移,当窗口移 动或调整大小后组件如何变化等功能授权给对应的容器动或调整大小后组件如何变化等功能授权给对应的容器 布局管理器来管理。布局管理器来管理。 l不同的布局管理器使用不同算法和策略,容器可以通过不同的布局管理器使用不同算法和策略,容器可以通过 选择不同的布局管理器来决定布局。选择不同的布局管理器来决定布局。 SISE Java语言程序 设计实用教程 布局管理器的类型 Java中的布局类型包括以下几种: - FlowLay

21、out(流式布局)(流式布局) - BorderLayout (边界布局)(边界布局) - GridLayout(网格布局)(网格布局) - CardLayout (卡片布局)(卡片布局) - GridBagLayout(高级方格式界面设计)(高级方格式界面设计) - BoxLayout(盒式界面设计):由(盒式界面设计):由Swing包提供包提供 - - null(空布局)(空布局) SISE Java语言程序 设计实用教程 FlowLayout布局管理器 l FlowLayout 是Panel、JPanel、Applet的缺省布局管理器。 其组件的放置规律是从上到下、从左到右进行放置其组件

22、的放置规律是从上到下、从左到右进行放置。如如 果容器足够宽,第一个组件先添加到容器中第一行的最果容器足够宽,第一个组件先添加到容器中第一行的最 左边,后续的组件依次添加到上一个组件的右边,如果左边,后续的组件依次添加到上一个组件的右边,如果 当前行已放置不下该组件,则放置到下一行的最左边当前行已放置不下该组件,则放置到下一行的最左边。 l 当容器的大小发生变化时,用FlowLayout管理的组件会 发生变化,其变化规律是:组件的大小不变,但是相对 位置会发生变化。例如有三个按钮都处于同一行,但是 如果把该窗口变窄,窄到刚好能够放下一个按钮,则第 二个按钮将折到第二行,第三个按钮将折到第三行。

23、SISE Java语言程序 设计实用教程 FlowLayout布局管理器 l FlowLayout的构造函数有: - FlowLayout( ):生成一个默认的流式布局生成一个默认的流式布局 - FlowLayout(int alignment):可以设定每一行组可以设定每一行组 件的对齐方式件的对齐方式 - FlowLayout(int alignment,int horz,int vert):可可 以指定对齐方式,设定组件间的水平和垂直距离以指定对齐方式,设定组件间的水平和垂直距离 l 对齐方式参数的含义: SISE Java语言程序 设计实用教程 l FlowLayout(FlowLay

24、out.RIGHT,20,40); /*第一个参数表示组件的对齐方式,指组件在这一行中的位置是第一个参数表示组件的对齐方式,指组件在这一行中的位置是 居中对齐、居右对齐还是居左对齐居中对齐、居右对齐还是居左对齐,第二个参数是组件之间的,第二个参数是组件之间的 横向间隔,第三个参数是组件之间的纵向间隔,单位是象素。横向间隔,第三个参数是组件之间的纵向间隔,单位是象素。*/ l FlowLayout(FlowLayout.LEFT); /居左对齐,横向间隔和纵向间隔都是缺省值居左对齐,横向间隔和纵向间隔都是缺省值5个象素个象素 l FlowLayout(); /缺省的对齐方式居中对齐,横向间隔和纵

25、向间缺省的对齐方式居中对齐,横向间隔和纵向间 隔都是缺省值隔都是缺省值5个象素个象素 FlowLayout mylayout = new FlowLayout(); FlowLayout exLayout = new FlowLayout(FlowLayout.RIGHT); setLayout(exlayout); / 为容器设置新布局为容器设置新布局 构造方法说明构造方法说明 SISE Java语言程序 设计实用教程 (P355,演示),演示) SISE Java语言程序 设计实用教程 l 网格布局管理器以矩形网管形式对容器的组件进行 布置。 l 容器被分成大小相等的矩形格子,一个矩形格子

26、中 放置一个组件,从左到右,自顶向下地放置。 l GridLayout的构造函数如下所示: q GridLayout():生成一个单列的网格布局 q GridLayout(int row,int col):生成一个设定行数和列数的网格 布局 q GridLayout(int row,int col,int horz,int vert):可以设置组件 之间的水平和垂直间隔 GridLayout布局管理器 SISE Java语言程序 设计实用教程 示例(演示) . . . Button btn; / 声明按钮数组声明按钮数组 String str=1,2,3,4,5,6,7,8,9; setLay

27、out(new GridLayout(3,3); btn=new Buttonstr.length; / 创建按钮数组创建按钮数组 for(int i=0;istr.length;i+) btni=new Button(stri); add(btni); SISE Java语言程序 设计实用教程 l BorderLayout 是Frame、JFrame、Dialog和 JApplet的缺省布局管理器。BorderLayout布 局管理器把容器分成5个区域:North, South,East,West和Center,每个区域只 能放置一个组件。 BorderLayout布局管理器 Center

28、North South WestEast SISE Java语言程序 设计实用教程 lBorderLayout() :构造一个组件之间没有间距的新边界布 局。 lBorderLayout(int hgap, int vgap) :指定组件之间的水平、 垂直间距来构造一个边界布局。 例如: f.setLayout(new BorderLayout(); f.add(North, new Button(North); /第一个参数表示把按钮添加到容器的North区域 构造方法构造方法 SISE Java语言程序 设计实用教程 例子(演示) . . . . . . setLayout(new Bor

29、derLayout(); setLayout(new BorderLayout(); Button btnEast=new Button(Button btnEast=new Button(东东);); Button btnWest=new Button(Button btnWest=new Button(西西);); Button btnNorth=new Button(Button btnNorth=new Button(北北);); Button btnSouth=new Button(Button btnSouth=new Button(南南);); Button btnCenter=

30、new Button(Button btnCenter=new Button(中中);); add(btnEast,BorderLayout.EAST);add(btnEast,BorderLayout.EAST); add(btnWest,BorderLayout.WEST); add(btnWest,BorderLayout.WEST); add(btnNorth,BorderLayout.NORTH); add(btnNorth,BorderLayout.NORTH); add(btnSouth,BorderLayout.SOUTH); add(btnSouth,BorderLayout

31、.SOUTH); add(btnCenter,BorderLayout.CENTER); add(btnCenter,BorderLayout.CENTER); SISE Java语言程序 设计实用教程 l在使用BorderLayout的时候,如果容器的大小发生变化, 其变化规律为:组件的相对位置不变,大小发生变化。例 如: l容器变高了,则North、South区域不变,West、Center、 East区域变高; l如果容器变宽了,West、East区域不变,North、Center、 South区域变宽。 l不一定所有的区域都有组件,如果四周的区域(West、 East、North、So

32、uth区域)没有组件,则由Center区域去补 充,但是如果Center区域没有组件,则保持空白 BorderLayout内的组件变化特性内的组件变化特性 SISE Java语言程序 设计实用教程 CardLayout布局管理器 (P358,演示) l 卡片布局是把组件安排到不同的卡片容器中,这个卡片容这个卡片容 器相互重叠,但一次只能显示一个组件器相互重叠,但一次只能显示一个组件,因此也称之为 “联合布局(Combining layouts)”,该布局管理器会自动改变 原有尺寸,充满整个空间,在添加组件时需要给组件起个在添加组件时需要给组件起个 名称,以便与以后直接通过名称调用组件。名称,以

33、便与以后直接通过名称调用组件。 l 每当需要许多面板切换,而每个面板需要显示为不同布局 时,可以使用卡片布局。 l 卡片布局提供了两种方式显示组件一种是通过public void show(Container parent,String name);另一种是根据组 件添加的顺序直接调用first(Container parent),next(Container parent),previous(Container parent),last(Container parent)4个方法来显示组件 SISE Java语言程序 设计实用教程 l BoxLayout是Swing提供的布局管理器,它 有两

34、种排列方式,一种是水平的,另一种是 垂直的。我们可以使用BoxLayout提供的两 个常量X_AXIS、Y_AXIS来指明组件在容器 中是水平还是垂直排列的。 l 构造方法:构造方法: BoxLayout(Container con, int axis) q BoxLayout.X_AXIS或或 BoxLayout.Y_AXIS BoxLayout布局管理器 SISE Java语言程序 设计实用教程 GridBagLayout类与 GridBagConstraints类 lGridBagLayout 是一个灵活的布局管理器,借助 于GridBagConstraints类,实现更灵活的外观管理,

35、 提供具有不同大小的行和列来放置组件,每个单提供具有不同大小的行和列来放置组件,每个单 元大小可不同。元大小可不同。 l方法:使用GridBagConstraints对象来确定组件 的大小和位置约束,然后将其加入GridBagLayout 对象中 button1 button2 button3 button8 button5button6 button 7 button4 button9 SISE Java语言程序 设计实用教程 GridBagLayout gbl=new GridBagLayout(); /只有一种无 参构造方法 panel.setLayout(gbl); GridBagCo

36、nstraints q=new GridBagConstraints(); /配置约束对象 q.*=*; gbl.setConstraints(component, q); /将组件 component按照约束q设置 panel.add(component); 具体的使用方式(具体的使用方式(P359) SISE Java语言程序 设计实用教程 常用的约束条件一常用的约束条件一 lfill属性:当组件的显示区域大于组件大小时的显示方式。 该属性必须与weighttx和weighty属性一起使用 q默认值为GridBagConstraints.NONE,表示组件大小不变 ; qGridBagCo

37、nstraints.HORIZONTAL表示将组件拉宽到与 单元格宽度相同; qGridBagConstraints.VERTICAL表示将组件的高度提升到 与单元格高度一致; qGridBagConstraints.BOTH表示将组件的高度和宽度都拉 伸到与单元格一致. lBoxLayout属性允许纵向或横向布置多个组件的布局管理器 SISE Java语言程序 设计实用教程 常用的约束条件二常用的约束条件二 lgridwidth,gridheight属性:指定组件所占的单元格的数 量,默认值皆为1. gridwidth表示横向单元格数 量;gridheight表示纵向单元格数量. lgrid

38、x,gridy属性:指定组件所在单元格的位置. gridx表 示列数; gridy表示行数. lweightx,weighty属性:指定当图形窗口扩大时,各单元 格如何分配被扩大的空间.weightx表示横向扩大权 重,weighty表示纵向扩大权重. lipadx,ipady属性:指定组件内部的填充宽度和高度. linsets属性:指定组件和单元格之间的空隙. lanchor属性:指定当组件小于单元格时的放置方式. SISE Java语言程序 设计实用教程 null布局管理器 l 当用户不想使用布局管理器,需要自己设置组 件的位置和大小时,可以把容器的布局设置为可以把容器的布局设置为 nul

39、l布局布局。 l 向空布局的容器添加组建时需要下列两个步 骤: l 使用add(c)方法向容器中添加组件c; l 组件调用setBounds(int x,int y,int width,int height) 方法设置该组件在容器中的位置。 l 需要注意的是,这种方法会导致程序与系统 相关,如不同的分辨率会产生不同的效果。 SISE Java语言程序 设计实用教程 小结:布局管理(一) l FlowLayout: 组件在一行中从左至右水平排列, 排满后折行,缺省的Panel布局管器 l BorderLayout:北、南、东、西、中,缺省的 窗口容器的管理器 l CardLayout:每一个组件

40、作为一个卡片,容器 仅显示多个卡片中的某一个 l GridLayout:以行和列的网格形式安排组件 l GridBagLayout:使用复杂、功能灵活 SISE Java语言程序 设计实用教程小结:布局管理(二) l Frame是一个顶级窗口。是一个顶级窗口。Frame的缺省布局管理器为的缺省布局管理器为 BorderLayout。 l Panel 无法单独显示,必须添加到某个容器中。无法单独显示,必须添加到某个容器中。 Panel 的的 缺省布局管理器为缺省布局管理器为FlowLayout。 l 当把当把Panel 作为一个组件添加到某个容器中后,该作为一个组件添加到某个容器中后,该Pane

41、l 仍然可以有自己的布局管理器。因此,可以利用仍然可以有自己的布局管理器。因此,可以利用Panel 使使 得得BorderLayout 中某个区域显示多个组件,达到设计复中某个区域显示多个组件,达到设计复 杂用户界面的目的杂用户界面的目的 。 l 如果采用无布局管理器如果采用无布局管理器 setLayout(null),则必须使用,则必须使用 setLocation(),setSize(),setBounds()等方法手工设置组等方法手工设置组 件的大小和位置,此方法会导致平台相关,不鼓励使用。件的大小和位置,此方法会导致平台相关,不鼓励使用。 SISE Java语言程序 设计实用教程 13.

42、3 处理事件 SISE Java语言程序 设计实用教程 几个有用的概念 l 事件 描述用户所执行的操作,描述用户所执行的操作,在 java.awt.event包中定义了若干类型的事件若干类型的事件 (例如点击鼠标、按下键盘、关闭窗口)(例如点击鼠标、按下键盘、关闭窗口) l 监听者接口 特定类型的Listener接口,用 于监听特定类型的事件 l 监听者类 是实现了某种监听者接口的类, 由编程者定义 l 事件监听者 是某个监听者类的对象,由编 程者使用new创建 SISE Java语言程序 设计实用教程 AWT事件处理的基本 概念和流程 l 事件源 用户在各种场合进行的各项操作,如敲击键盘或用

43、鼠 标点击某个组件等。事件源指的是产生事件的对象事件源指的是产生事件的对象。 l 事件对象 对于不同的事件源,Java虚拟机会产生相应类型的事 件对象。 Java自动识别各种不同的事件对象的类型并进行分类 处理。 l 事件处理(监听)器接口 各种类型的事件均有对应的事件处理器接口事件处理器接口。 该接口封装了与其对应类该接口封装了与其对应类 型事件的各种处理方法,型事件的各种处理方法, 并建立了事件到相应处理并建立了事件到相应处理 方法的自动映射。方法的自动映射。 SISE Java语言程序 设计实用教程 事件处理模型 l基于授权事件模型: q 事件来源对象事件来源对象S因用户进行操作(鼠标或

44、键盘) q 系统会自动触发此事件类对象事件类对象E,并通知所授权 的事件监听者L(需事先调用来源对象的 addXxxListener方法向L注册), q 事件监听者事件监听者L中有处理各种事件的方法(事件处理 者1n)便会处理此事件E的各种状况 。 SISE Java语言程序 设计实用教程 编程的基本方法(重点) 1. 对java.awt中组件实现事件处理必须使用java.awt.event包, 所以在程序开始应加入import java.awt.event.*语句。 2. 定义事件监听者类,有两种方法(): 2.1.实现事件所对应的接口接口XXListener,并重写接口中的 全部方法全部方

45、法(即使不需要的方法也必须定义,可定义为空方法)。 2.2. 继承事件对应的抽象适配器抽象适配器(adapter)类类,重写该类中 所需的方法所需的方法 3. 创建事件监听者对象 4. 为将会触发事件的组件C注册相应的事件监听者对象: 事件源.addXXListener(XXListener代表某种事件监听者)。 实际上addXXListener中的参数是一个事件监听器对象事件监听器对象。 5. 要删除事件监听者可以使用语句:事件 源.removeXXListener; SISE Java语言程序 设计实用教程 public class ButtonAct extends Frame . . . public ButtonAct() . . . /为b1注册事件监听者B1 b1.addActionListener(new B1(); add(b1); . . . /利用inner class结构定义监听者类 class B1 implements ActionListener /利用actionPerformed方法进行事件处理 public void actionPerformed(Action

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论