面向对象程序设计-Java(第四版)课件 第12章 GUI设计中的事件响应_第1页
面向对象程序设计-Java(第四版)课件 第12章 GUI设计中的事件响应_第2页
面向对象程序设计-Java(第四版)课件 第12章 GUI设计中的事件响应_第3页
面向对象程序设计-Java(第四版)课件 第12章 GUI设计中的事件响应_第4页
面向对象程序设计-Java(第四版)课件 第12章 GUI设计中的事件响应_第5页
已阅读5页,还剩53页未读 继续免费阅读

下载本文档

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

文档简介

第12章GUI设计中的事件响应12.1事件响应原理12.2JLable组件12.3JButton组件与JToggleButton组件12.4JCheckBox和JRadioButton组件12.5JComboBox组件12.6JList组件12.7JTextField与JTextArea组件

12.1事件响应原理

例如:在JFrame窗体添加一个按钮,按钮标签为“点击”,当点击按钮时,按钮标签变为“OK”。

实现这样的GUI程序就要用到GUI界面上的事件响应机制。

注册监听器给事件源事件源2.产生事件监听器3.触发事件监听器事件处理器事件对象1.操作事件源4.事件被作为参数交给事件监听器的事件处理器处理委托事件模型Java采用委托事件模型来处理事件。委托事件模型组成:事件源(EventSource)、事件对象(EventObject)及事件监听器(EventListener)

。委托事件模型的特点:是将事件委托给事件监听器处理,而不是事件源本身,从而将使用者界面与程序逻辑分开。Java的事件处理有下面四个重要概念:

1.事件对象:用户操作事件源而产生的事件;

2.事件源:产生事件的组件,例如按钮、文本框等;

3.事件监听器:是事件对象的接收者。要接收产生的事件对象,必须为事件源对象注册事件监听器;

4.事件处理方法(Eventhandle):处理事件的方法。当事件监听器得到操作事件源产生的事件对象时,则调用相应的事件处理器的方法去处理。委托事件模型的实现步骤如下:(1)创建事件源组件;(2)为产生事件对象的事件源组件注册事件监听器;(3)添加事件监听器的事件处理器的处理方法。

【示例程序C12_1.java】JFrame窗体添加一个按钮,按钮标签为“点击”,当点击按钮时,屏幕输出“OK”。结果如下:java.awt.Event事件类的继承关系Java.awt事件类的继承关系如下:java.awt.Objectjava.util.EventJava.util.Event.Object.java.awt.AWTEventjava.awt.event.ActionEvent.java.awt.event.AdjustmentEventjava.awt.event.InvocationEventjava.awt.event.ItemEventjava.awt.event.TextEventjava.awt.event.ComponentEventjava.awt.event.ContainerEventjava.awt.event.FocusEventjava.awt.event.PaintEventjava.awt.event.WindowEvent事件与事件源的关系

Swing中常用的事件类和事件源的关系事件与事件监听器事件与事件监听器之间的关系各事件监听器与各成员方法之间的关系

12.2JLable组件

JLable组件被称为标签,它是一个静态组件。每个标签用一个标签类的对象表示,可以显示一行静态文本。标签只起信息说明的作用,而不接受用户的输入,无事件响应。JLable类的常用成员方法

12.3JButton组件与JToggleButton组件

JButton组件与JToggleButton组件通常被称为按钮,它是一个具有按下、抬起两种状态的组件。用户可以指定按下按钮(单击事件)时所执行的操作(事件响应)。按钮上通常有一行文字(标签)或一个图标以表明它的功能。

Swing组件中的按钮还可以实现下述效果:

(1)改变按钮的图标。一个按钮可以有多个图标,可根据Swing按钮所处的状态而自动变换不同的图标。

(2)为按钮加入提示,即当鼠标在按钮上稍做停留时,在按钮边可出现提示,当鼠标移出按钮时,提示自动消失。

(3)在按钮上设置快捷键。

(4)设置默认按钮,即通过回车键运行此按钮的功能。

java.lang.Object

java.awt.Component

java.awt.Container

javax.swing.JComponent

javax.swing.JLabel

javax.swing.JTextField

javax.swing.JTextArea

javax.swing.JList

javax.swing.JComboBox

javax.swing.AbstractButton

javax.swing.JButton

javax.swing.JToggleButton

javax.swing.JCheckBox

javax.swing.JRadioButton常用组件的继承关系AbstractButton类是一个抽象类,类提供了许多组件需要使用的成员方法和事件驱动方法。AbstractButton类的常用成员方法成员方法功能说明IcongetIcon( )获取默认图标voidsetIcon(Iconicon)设置此按钮的默认图标StringgetLabel( )获取标签文本voidsetLabel(Stringlable)设置标签的文本voidsetHorizontalAlignment(intalig)设置文本与图标的水平对齐方式(CENTER,LEFT,RIGHT,LEADING,TRAILING)voidsetVerticalAlignment(intalig)设置文本与图标的垂直对齐方式(CENTER,TOP,BOTTOM)voidsetHorizontalTextPosition(inttp)设置文本与图标的水平相对位置CENTER,LEFT,RIGHT,LEADING,TRAILING)voidsetVerticalTextPosition(inttp)设置文本与图标的垂直相对位置(CENTER,TOP,BOTTOM)成员方法功能说明StringgetText( )获取此按钮的文本voidaddChangeListener(ChangeListenerI)给按钮添加指定的ChangeListenervoidaddActionListener(ActionListenerI)给按钮添加指定的ActionListenervoidaddItemListener(ItemListenerI)给按钮添加指定的ItemListenervoidremoveActionListener(ActionListenerI)从按钮中删除指定的ActionListenervoidremoveChangeListener(ChangeListenerI)从按钮中删除指定的ChangeListenervoidremoveItemListener(ItemListenerI)从按钮中删除指定的ItemListenervoidsetPressedIcon(Iconpricon)设置按钮按下时的图标voidsetRolloverIcon(Iconroicon)设置鼠标经过时按钮的图标voidsetRolloverEnabled(booleanb)设置翻转效果是否有效voidsetRolloverSelectedIcon(Iconseicon)设置按钮的翻转并选择图标voidsetEnabled(booleanb)设定按钮是否禁用voidsetSelected(booleanb)设置按钮的状态voidsetText(Stringtext)设置按钮的文本booleanisSelected( )获取按钮的状态IcongetSelectedIcon( )获取按钮的图标JButton类的构造方法JToggleButton按钮与JButton按钮的区别:当按下JButton按钮并释放鼠标后,按钮会自动弹起;当按下JToggleButton按钮并释放鼠标后,按钮不会自动弹起,除非再按一次。JToggleButton类的构造方法JToggleButton类的构造方法1.ActionEvent事件

ActionEvent事件简称为动作事件。能触发这个事件的动作包括:单击一个按钮,双击一个列表中的选项,选择了一个菜单项,在文本框中输入回车等。

2.获取事件源的方法

要处理事件必须要得到事件源,有两种方法:

(1) getActionCommand( )方法:是ActionEvent类的方法,用来获取事件源对象的标签或事先为这个对象设置的命令名。

(2) getSource( )方法:是EventObject类的方法,该类是ActionEvent类的父类,用来获取最初发生事件的事件源对象。ActionEvent事件及其响应3.动作事件的响应

例如:Button对象按下按钮并释放,产生ActionEvent事件。动作事件源会将这个ActionEvent事件发送给监听器,并执行监听器的actionPerformed()方法来完成事件响应。动作事件处理步骤如下:

(1)将响应动作事件所需要的业务逻辑封装在实现监听器接口的类中;

ClassClickActionimplementsActionListener{

publicvoidactionPerformed(ActionEvente){

//....moreworktodo.

}

}

(2)创建事件源并注册完成所需业务逻辑的监听器;ActionListenerclick=newClickAction();//创建监听器对象

JButtonbtn=newJButton();//创建按钮对象

btn.addActionListener(click);

//注册监听器对象(3)当事件发生时,事件源就会将事件对象传递给所有注册的监听器;(4)接着引用监听器的actionPerformed()方法来完成事件响应。用户可在该方法体中写入处理此事件的程序代码,在方法体中可以引用ActionEvent事件的getSource( )方法来获取引发事件的对象,也可以引用getActionCommand( )方法来获取对象标签或事先为这个对象设置的命令名。

【示例程序C12_2.java】编写一个单击按钮时改变标签文本与按钮文本的内容的程序。运行结果如下:应用举例(a)

鼠标不在进入按钮区域

(b)鼠标进入按钮区域(c)鼠标单击按钮时的图(c)鼠标单击按钮后的图

12.4JCheckBox和JRadioButton组件

JCheckBox组件被称为复选框(也称检测框),它提供“选中/ON”和“未选中/OFF”两种状态。用户点击某复选框就会改变该复选框原有的状态。

JRadioButton组件被称为选项按钮,与JCheckBox组件功能完全一样,只是图形不同,复选框为方形图标,选项按钮为圆形图标。

Java为了与其他系统一致,专门提供javax.swing.ButtonGroup

类实现诸如JRadioButton、JRadioButtonMenuItem与JToggleButton等组件的多选一功能。javax.swing.AbstractButton

javax.swing.JButton

javax.swing.JToggleButton

javax.swing.JCheckBox

javax.swing.JRadioButtonJCheckBox类的构造方法JRadioButton类的构造方法

1.ItemEvent事件

ItemEvent事件简称为选择事件是事件源的选项被选定或取消的事件。引发这类事件的动作包括:

(1)改变复选框JCheckBox对象的选中或不选中状态;

(2)改变单选按钮JRadioButton对象的选中或不选中状态;

(3)改变下拉列表框JComboBox对象中选项的选中或不选中状态;

(4)改变菜单项JMenuItem对象中选项的选中或不选中状态;

(5)改变JCheckBoxMenuItem对象中选项的选中或不选中状态。ItemEvent事件及其响应2.获取ItemEvent事件源的方法

得到ItemEvent事件源主要有三个方法:

(1) ItemSelectablegetItemSelectable( )方法:用来获取返回产生事件的ItemSelectable对象,也可以使用其父类EventObject类提供的getSource( )方法返回引发选中状态变化的事件源。

(2) ObjectgetItem( )方法:用来获取返回受事件影响的项,通过调用这个方法可以知道用户选中了哪个选项。

(3) intgetStateChange( )方法:用来获取返回状态更改的类型(已选定或已取消选定)。通常用ItemEvent类的静态常量SELECTED(代表选项被选中)和DESELECTED(代表选项被放弃或不选)来表达。ItemEvent事件处理的程序结构如下。

(1)创建监听器的处理器的对象,创建按钮事件源对象,并为按钮对象注册监听器;

//创建监听器的处理器的对象

ItemListenerselect=newSelectAction( );

JCheckBoxcb=newJCheckBox( );//创建复选框对象

cb.addItemListener(select);

//为复选框对象注册监听器

当事件发生时,注册的监听器对象就可以接收来自事件源的事件了。

3.选择事件的响应(2)将响应选择事件所需要的业务逻辑封装在实现监听器接口的类中ClassSelectActionimplementsItemListener{

publicvoiditemStateChanged(ItemEvente){

//处理选择事件所需要的业务逻辑

}}

【示例程序C12_3.java】根据复选框及单选按钮来改变标签组件的文本大小及颜色。应用举例c12_3运行结果

JComboBox组件被称为组合框或下拉列表,允许用户从多个选项中选择一个,它可以有两种非常不同的表单。默认的表单是不可编辑的组合框,它有一个按钮和一个值的下拉列表。第二个表单称为可编辑组合框,它具有一个文本字段,旁边有一个小按钮。用户可以在文本字段中键入值或单击按钮显示下拉列表。不可编辑的组合框可编辑组合框12.5JComboBox组件相关类的层次结构java.awt.Componentjava.awt.Containerjavax.swing.Jcomponent

javax.swing.JComboBox方

法说

明构造方法JComboBox()创建一个带有默认数据模型的JComboBox。JComboBox(E[]items )创建包含指定数组元素的JComboBox。JComboBox(Vector<E>items )创建包含指定Vector中的元素的JComboBoxJComboBox(ComboBoxModela<E>Model)创建一个JComboBox,从现有的ComboBoxModel中获取项目。JComboBox类的构造方法和成员方法方

法说

明成员方法voidaddActionListener(ActionListenere)添加指定的ActionListenervoidaddItemListener(ItemListeneraListener)添加指定的ItemListener

voidaddItem(ObjectanObject)给选项表添加选项

StringgetActionCommand( )获取动作命令

ObjectgetItemAt(intindex)获取指定下标的列表项

intgetItemCount( )获取列表中的选项数

intgetSelectedIndex( )获取当前选择的下标

intgetSelectedItem( )获取当前选择的项

JComboBox组件能够响应的事件分为选择事件与动作事件。若用户选取下拉列表中的选择项时,则激发选择事件,使用ItemListener事件监听器进行处理;若用户在JComboBox上直接输入选择项并回车,则激发动作事件,使用ActionListener事件监听器进行处理。事件响应

【示例程序C12_4.java】如图所示。JFrame窗体上添加一个JPanel容器,JPanel容器上添加3个JLabel组件,第一个JLabel组件的标签文本设为“姓名:”,第二个设为“英语:”,第三个设为学生的成绩,如“80”。JPanel容器上添加1个JComboBox组件,组件中添加4个学生的名字选项,当点击下拉列表选择项得到学生的名字时,则第三个JLabel组件的标签文本显示出他的成绩。应用举例图(a)程序运行后没做任何选择的结果

图(b)程序运行后选择学生赵欣的结果JList称为列表组件,它将所有选项放入列表框中。如果将JList放入滚动面板(JScrollPane)中,则会出现滚动菜单效果。利用JList提供的成员方法,用户可以指定显示在列表框中的选项个数,而多余的选项则可通过列表的上下滚动来显现。

JList组件与JComboBox组件的最大区别是:JComboBox组件一次只能选择一项,而JList组件一次可以选择一项或多项。选择多项时可以是连续区间选择(按住Shift键进行选择),也可以是不连续的选择(按住Ctrl键进行选择)。java.lang.Object

java.awt.Component

java.awt.Container

javax.swing.Jcomponent

javax.swing.JList<E>12.6JList组件构造方法方

法说

明JList()构造一个空的JListJList(E[ ]listData)构造显示指定数组中的元素的JList。JList(Vectorl<?ExtendaE>istData )构造显示指定Vector中的元素的JList。JList(ListModel<E>dataModel)构造一个JList,显示来自指定的非空模型的元素。成员方法voidaddListSelectionListener(ListSelectionListenere)添加指定的ListSelectionListenerintgetSelectedIndex( )获取所选项的第一个下标intgetSelectedIndices( )获取所有选项的下标voidsetSelectionBackground(Colorc)设置单元格的背景颜色voidsetSelectionForeground(Colorc)设置单元格的前景颜色intgetVisibleRowCount( )得到可见的列表选项值voidsetVisibleRowCount(intnum)设置可见的列表选项JList类的构造方法和成员方法

JList组件的事件处理一般分为两种:

(1)当用户单击列表框中的某一个选项并选中它时,将产生ListSelectionEvent类的选择事件;

(2)当用户双击列表框中的某个选项时,则产生MouseEvent类的动作事件。

实现JList组件的选择事件步骤:

(1)创建JLis组件的事件源对象,添加对象的选项;

例如:JListlis=newJList(s);//创建lis事件源对象,参数s为添加的选项

(2)为事件源对象注册监听器,将事件源与事件处理器this对象关联

例如:lis.addListSelectionListener(this);//this为ListSelectionListener接口的对象

ListSelectionEvent事件及其响应(3)编写事件处理器的事件处理方法体的内容。

publicvoidvalueChanged(ListSelectionEvente)

{

//处理选择事件所需要的业务逻辑

}

当用户单击列表框中的某一个选项并选中它时,将产生ListSelectionEvent类的选择事件对象,系统自动产生一个包含这个事件对象有关信息的ListSelectionEvent类的e事件对象,并自动调用抽象的选择事件valueChanged(ListSelectionEvente)方法处理事件。

【示例程序C12_5.java】如图所示。JFrame窗体北部添加1个JLabel组件,中

温馨提示

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

评论

0/150

提交评论