`

Java GUI编程中的事件处理机制

阅读更多

1)事件:用户对程序的某一种功能性操作。

Java中的事件主要有两种:

1.组件类事件

componentEvent、ContainerEvent、WindowEvent、FocusEvent、PaintEvent、MouseEvent共六大类,

它们均是当组件的状态发生变化时产生。

2.动作类事件

ActionEvent、TextEvent、AdjustmentEvent、ItemEvent共四类。

它们均对应用户的某一种功能性操作动作。

Java中的事件类都包含在JDK的 Java.awt.event包中。

2)事件编程:

用户编程定义每个特定事件发生时程序应做出何种响应,并且这些响应代码会在对应的事件发生时由系统自动调用。

3)事件委托授权处理模型

JDK1.1以上版本实现了事件委托授权处理模型的机制。

① 事件源:产出事件的组件。

② 监听器:对组件所产生的事件作出具体响应的代吗,即事件产出与处理分别由两个不同类(它们可以分别放在不同的程序中)加以编程实现。

③ 事件处理机制:AWT组件自身不编程处理相应的事件,面是交由事件监听器(它可以是组件所在的容器类或另外的Java程序类,只要它们实现了相关的事件监听器接口即可)处理(事件授权处理模型)。

④ 事件处理的包:java.awt.event包,它提供AWT事件所需的类和接口

ActionEvent类对应ActionListener接口;

MouseEvent类对应MouseMotionListener接口和MouseListener接口;

WindonEvent类对应WindonListener接口---即发生了XXXEvent类型的事件,那么处理该事件的接口为XXXListener);它们的父类为EventObject类。

各个事件类的说明:

EventObject:所有事件类的超类

最重要的方法-- getSource(),返回产生某事件的对象

AWTEvent:所有AWT事件类的超类

最重要的方法-- getID(),返回某事件的ID号,事件的ID是一个整数,它指定事件的类型,例如按钮事件或鼠标点击事件

ActionEvent:激活组件时发生的事件

AdjustmentEvent:调节可调整的组件(如移动滚动条)时发生的事件

ComponentEvent:操纵某组件时发生的一个高层事件

ContainerEvent:向容器添加或删除组件时发生

InputEvent:由某输入设备产生的一个高层事件

ItemEvent:从选择项,复选框或列表中选择时发生

KeyEvent:操作键盘时发生

MouseEvent:操作鼠标时发生

PaintEvent:描绘组件时发生的一个事件

TextEvent:更改文本时发生

WindowEvent:操作窗口时发生的事件,如最大化或最小化某一窗口。

4)事件编程的基本原则:

事件处理的类代码要对某一类事件加以处理,则应实现它们所对应的接口,并且给出该接口中定义的全部事件响应函数的功能实现(重写其函数体);然后在创建组件时注册该事件的监听器(响应者)。

5)事件注册:

事件源通过对特定的事件进行注册,以指定该事件的监听器(响应者)是谁。

6)事件注册函数:

函数名由“add + 事件类型对应的监听器接口名称”组成;函数参数为监听器对象(实现事件响应的类的对象,如容器组件自身响应该事件,则监听器对象应用this代表)。

public void add< listenerType >(< listenerType > ListenerObj)

{

}

7)事件编程步骤:

①实现某一事件的监听器接口(定义事件处理类并实现监听器接口)。

②在事件处理类中重写(实现)其事件处理的函数体。

③在创建AWT组件时注册事件处理代码以指定该事件的监听器(响应者)是谁。

?/P>

public class ButtonActionEvent extends Applet 
implements ActionListener,MouseMotionListener,MouseListener
{     
public void init()
{     this.addActionListener(this);
      this.addMouserMotionListener(this);
      this.addMouseListener(this);
}
public void actionPerFormed(ActionEvent event)
{
if(event.getSource()==SourceObject)
{  //利用事件响应函数中的事件对象获取事件产生时的相关信息              
}
else if(event.getActionCommand()=="组件的标签名字符文字"
{
}
}
public void mouseDragged(MouseEvent event)
{ //利用事件响应函数中的事件对象获取事件产生时的相关信息  
int x=event.getX();
int y=event.getY();
}
public void mouseMove(MouseEvent event)
{
}
}
,从而响应用户对该组件的操作。本类实现某类事件对应的监听器接口,并实现对应的响应函数),也可屏蔽它(将其事件响应函数体置空)。

(2)事件响应类(监听器)可以实现多个监听器接口,以响应多组不同事件,从而可使同一个组件可以注册多种事件。

(3)利用事件响应函数中的事件对象获取事件产生时的相关信息(event.getSource())事件源对象,event.getX(), event.getY(),事件产生时的鼠标位置,event.getActionCommand(),获取组件的字符串名称。

9)各个事件监听器接口

ActionListener

使用它的常见AWT类 Button, List, TextField

接口定义的方法

public void actionPerformed(ActionEvent e)

添加到组件的方法

Obj.addActionListener(ActionListener l)

AdjustmentListner

使用它的常见AWT类 ScrollBar

接口定义的方法

public void adjustmentValueChanged(AdjustmentEvent e)

添加到组件的方法

Obj.addAdjustmentListener(AdjustmentListener l)

ComponentListener

使用它的常见AWT类

接口定义的方法

public void componentResized(ComponentEvent e)

public void componentMoved(ComponentEvent e)

public void componentShown(ComponentEvent e)

public void componentHidden(ComponentEvent e)

添加到组件的方法

Obj.addComponentListener(ComponentListener l)

ContainerListener

使用它的常见AWT类

接口定义的方法

public void componentAdded(ContainerEvent e)

public void componentRemoved(ContainerEvent e)

添加到组件的方法

ItemListener

使用它的常见AWT类 Checkbox, Choice, List

接口定义的方法

public void itemStateChanged(ItemEvent e)

添加到组件的方法

FocusListener

使用它的常见AWT类

接口定义的方法

public void focusGained(FocusEvent e)

public void focusLost(FocusEvent e)

添加到组件的方法

KeyListener

使用它的常见AWT类

接口定义的方法

public void keyTyped(KeyEvent e)

public void keyPressed(KeyEvent e)public void keyReleased(KeyEvent e)

添加到组件的方法

MouseListener

使用它的常见AWT类

接口定义的方法

public void mouseClicked(MouseEvent e)

public void mousePressed(MouseEvent e)

public void mouseReleased(MouseEvent e)

public void mouseEntered(MouseEvent e)

public void mouseExited(MouseEvent e)

添加到组件的方法

MouseMotionListener

使用它的常见AWT类

接口定义的方法

public void mouseDragged(MouseEvent e)

public void mouseMoved(MouseEvent e)

添加到组件的方法

TextListener

使用它的常见AWT类 TextField, TextArea

接口定义的方法

public void textValueChanged(TextEvent e)

添加到组件的方法

WindowListener

使用它的常见AWT类

接口定义的方法

public void windowOpened(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)

添加到组件的方法

10)事件适配器

由于事件监听器接口是Abstract类型,意谓着实现该接口的类应全部实现其各个成员函数,但实际应用中可能只需处理某些事件响应代码;此时再采用实现事件监听器接口可能会导致编程复杂。JDK中提供事件适配器方式来实现事件编程。

①每一种监听器接口有相应的适配器类,程序员只需让事件处理类从某一适配器类派出而不采用实现监听器接口的方式,这样仅需重写用户感兴趣的相应函数体代码。各个事件监听器接口相相应的事件适配器类如下:

WindowListener ------WindowAdapter

MouseListener -----MouseAdapter

MouseMotionListener-----MouseMotionAdapter。

②在事件注册时,应将监听器设为适配器的派生类(子类)对象,该适配器类中事件响应函数将被执行。

分享到:
评论

相关推荐

    Java GUI编程中的事件处理机制详细讲解 (1)

    本文将围绕“Java GUI编程中的事件处理机制详细讲解(1)”这一主题展开,深入探讨组件类事件、动作类事件以及事件委托授权处理模型等内容,并结合实际案例进行说明。 #### 组件类事件与动作类事件 Java GUI编程中...

    java GUI编程炫酷皮肤包

    总之,Java GUI编程炫酷皮肤包为开发者提供了美化应用的机会,通过合理地利用布局管理、事件处理、皮肤切换等功能,可以创建出既美观又易用的桌面应用程序。在实际项目中,应结合具体需求选择合适的GUI库,充分利用...

    JavaGUI事件处理

    ### JavaGUI事件处理详解 #### 一、Java GUI事件处理概览 在Java图形用户界面(GUI)编程中,事件处理是一项核心技能。通过事件处理,我们能够使GUI应用程序响应用户的操作,例如鼠标点击、键盘输入等。Java的事件...

    JavaGUI编程基础入门

    "JavaGUI编程基础入门" JavaGUI编程入门基础是学习Java图形...JavaGUI编程基础入门涵盖了AWT和Swing包的基础知识,包括AWT GUI组件、AWT容器、布局、Component类的基本属性和操作方法、AWT基础知识和AWT事件处理机制。

    javaGUI编程基础源码

    本资源“javaGUI编程基础源码”提供了一系列已调试通过的基础代码示例,帮助初学者理解和实践GUI编程。 GUI(图形用户界面)是用户与计算机系统交互的一种方式,通过图形元素如按钮、文本框、菜单等进行操作。在...

    Java GUI编程方法开发的一个贪吃蛇小游戏.zip

    Java GUI编程是Java应用程序开发中的一个重要领域,它允许开发者创建具有图形用户界面的应用程序,而贪吃蛇小游戏是一个经典的计算机游戏,非常适合初学者用来实践GUI编程。本项目使用Java GUI编程方法开发了一个...

    javaGUI编程实例

    在"javaGUI编程实例"中,我们可能涉及到以下核心概念: 1. **JFrame**:这是Java Swing中的主窗口类,用于承载其他组件。开发者通常会创建一个JFrame对象作为应用的主窗口。 2. **JPanel**:这是一个容器类,可以...

    java图形界面与事件响应 所谓的GUI编程

    在Java的事件处理机制中,事件适配器(Event Adapter)提供了一种简化事件处理的方式。通过继承事件适配器类,可以方便地覆盖特定事件类型的方法,而不需要实现接口中的所有方法。 AWT通过JavaBeans体系结构支持,...

    基于JavaGUI编程的医院病房管理系统

    在“基于JavaGUI编程的医院病房管理系统”中,开发者可能使用了Swing库来构建系统的主界面,因为Swing组件相比AWT更加灵活且易于定制。Swing提供了诸如JFrame(窗口)、JButton(按钮)、JLabel(标签)、JTextField...

    Java GUI编程.docx

    为了响应用户的这些操作,Java 提供了事件处理机制。 事件处理通常包括以下几个步骤: 1. **注册监听器**:为 Component 注册相应的事件监听器。 2. **触发事件**:当特定的用户操作发生时,会触发相应的事件。 3....

    Java GUI实例下载

    本资源“Java GUI实例下载”提供了一系列关于Java GUI编程的实例,涵盖了事件处理、布局管理以及各种控件的使用,旨在帮助初学者和开发者深入理解和实践Java GUI编程。 1. **事件处理**:在Java GUI中,事件处理是...

    javaGUI编程例子

    Java GUI编程例子主要展示了如何使用Java的Swing和AWT库来创建图形用户界面,用于实现用户登录、注册以及相关的数据管理功能。在Eclipse Luna(2015)集成开发环境中,配合JDK 1.7和MySQL 5.5数据库进行开发。 1. *...

    java事件处理机制

    Java事件处理机制是Java GUI编程中的重要组成部分,它允许用户与图形界面进行交互。在Java中,事件处理涉及事件源(Event Source)、事件(Event)和事件监听器(Event Listener)。当用户执行某个操作,如点击按钮...

    JAVA事件处理机制

    Java事件处理机制是Java编程中一个关键的概念,它主要用于用户界面(UI)应用程序,使得程序能够响应用户的操作,如点击按钮、选择菜单项等。在Java中,事件处理主要涉及三个核心组件:事件源(Event Source)、事件...

    Java GUI实验指导书

    在 Java GUI 编程中,事件处理机制是用于处理用户交互的机制。Java 提供了多种事件处理机制,例如 ActionListener、MouseListener 等。这些事件处理机制可以用来响应用户交互,例如按钮点击、鼠标点击等。 八、结论...

    javaGUI开发的小程序

    在实习过程中,这些练习有助于提升开发者对Java GUI编程的理解,包括组件使用、事件处理、布局管理以及用户交互设计等。通过实际操作,开发者能够更好地掌握Java Swing库,为创建复杂的桌面应用程序打下坚实基础。...

    Java GUI编程-弹钢琴项目代码及其资源

    总之,这个Java GUI编程项目是一个综合性的学习案例,涵盖了Java GUI组件的使用、事件处理、音频处理以及资源管理等多个知识点。通过研究这个项目,学习者不仅可以深入理解Java GUI编程,还能了解到如何将理论知识...

    Java教学中事件处理机制的探讨.pdf

    Java 事件处理机制是 Java 语言 GUI 编程中的一个重要内容,涉及到多个抽象的概念和复杂的对象之间的关系,对初次接触的学生来说,难以清晰地理解其原理。本文探讨了如何在教学中科学地讲授事件处理机制,并给出了...

    基于Java GUI编程实现QQ(开发平台使用eclipse+sqlserver)

    这个项目旨在为初学者提供一个学习和实践的机会,通过模仿QQ的基本功能,掌握Java图形用户界面(GUI)设计、事件处理、网络通信以及数据库操作等核心技能。 1. **Java GUI编程**:Java GUI编程主要涉及Java Swing库...

    使用Java GUI实现用户登陆界面

    这个任务适合大学二年级的学生作为编程作业,特别是在学习Java基础和GUI编程时。Java GUI允许开发者创建丰富的、交互式的应用程序,使得用户可以通过点击按钮、输入数据等方式与程序进行交互。我们将主要关注以下...

Global site tag (gtag.js) - Google Analytics