Java文本框上的ActionEvent事件

来源:互联网 发布:mac退出客人后黑屏 编辑:程序博客网 时间:2024/06/10 07:44

三个概念:事件源, 监视器, 处理事件的接口

 

事件源

能够产生事件的对象都可以成为事件源,如文本框、按钮、下拉式列表等。 事件源必须是一个对象,而且这个对象必须是

Java认为能够发生事件的对象。

 

监视器

一个对事件源进行监视,以便对发生的事件做出处理的对象。 事件源通过调用相应的方法将某个对象作为自己的监视器,例如。

对于文本框,这个方法是

addActionListener(监视器);
对于获取了监视器的文本框对象,在文本框获得输入焦点之后,如果用户按回车键,Java运行系统就自动用ActionEvent类创建

一个对象, 即发生了ActionEvent事件。 也就是是说,事件源获得监视器之后,相应的操作就会导致事件的发生,并通知监视器,

监视器就会做出相应的处理。


处理事件的接口

监视器负责处理事件源发生的事件。 监视器是一个对象,为了处理事件源发生的事件,监视器这个对象会自动调用一个方法来

处理事件。

Java规定:为了让监视器这个对象能够对事件源发生的事件进行处理,创建该监视器对象的类必须声明实现相应的接口,即必须

在类体中给出该类接口中所有方法的方法体,那么当事件源发生事件时, 监视器就自动调用执行被类实现的某个接口方法。 

java.awt.event包中提供了许多事件类和处理各事件的接口。对于文本框这个接口的名字是ActionListener,这个接口中只有一

个方法:

      public   void   actionPerformed(ActionEvent    e);

 

 

总结:

其过程可以总结为:通过实现某个接口来定义一个监视器类,在这个类中给出该接口中所有方法的方法体;为某一事件源(文本框等)

添加监视器(不同事件源添加监视器的函数可能有所不同)

eg. 

 

import java.applet.*;

import java.awt.*;

import java.awt.event.*;


//该ActionListener接口只有一个方法,即actionPerformed,定义类实现该接口和接口中的方法

//监视器类

class   Handle   implements   ActionListener            //①实现某接口

{ 

    protected TextEvent textEvent;

    public Handle(TextEvent   textEvent)                           //构造函数

    {

        this.textEvent = textEvent;

    }

 

    public void actionPerformed(ActionEvent e)               //②实现该接口中的所有方法 

    {

        if(textEvent.text1 == e.getSource())

        {

            String word = textEvent.text1.getText();

            if(word.equals("男孩"))

            {

                textEvent.text2.setText("boy");

            }

            else if(word.equals("女孩"))

            {

                textEvent.text2.setText("girl");

            }

            else if(word.equals("太阳"))

            {

                textEvent.text2.setText("sun");

            }

            else

            {

                textEvent.text2.setText("其他情况");

            } 

        } //if

    }//pubic void actionPerformed(ActionEvent   e)

}

 

 

public class TextEvent extends Applet      //继承自Applet,固定写法

    TextField text1, text2;

    public  void init()                                     //init()函数 ,初始化,作用可见前篇文章

    {

        text1 = new TextField(10);

        text2 = new TextField(10);

        add(text1);

        add(text2);

        Handle handle = new Handle(this);      //③定义监视器类对象

        text1.addActionListener(handle);        //④添加监视器对象

    } 

}

运行结果:

Java文本框上的ActionEvent事件 - 大灰狼 - 大灰狼 的博客            Java文本框上的ActionEvent事件 - 大灰狼 - 大灰狼 的博客

 


 

 

 

 Java文本框上的ActionEvent事件 - 大灰狼 - 大灰狼 的博客