三个概念:事件源, 监视器, 处理事件的接口
事件源
能够产生事件的对象都可以成为事件源,如文本框、按钮、下拉式列表等。 事件源必须是一个对象,而且这个对象必须是
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); //④添加监视器对象
}
}
运行结果: