java中事件监听_Java中的事件监听

继续在看Java Tutorial,不过已经到了GUI了,呵呵!~

在"Introduction to Event Listeners"中,看到了JAVA的事件监听机制。

实现事件监听机制,需要有如下三件事情:

1、In the declaration for the event handler class, one line of code specifies that the class either implements a listener interface or extends a class that implements a listener interface. For example:

public class MyClass implements ActionListener {

在每个事件处理类的声明中,其中有代码指明此类实现某个监听器(Listener)接口或者继承自某个实现了监听器(Listener)接口的类,例如:

public

class

MyClass implement ActionListener {

2、Another line of code registers an instance of the event handler class as a listener on one or more components. For example:

someComponent.addActionListener(instanceOfMyClass);

另外有代码注册一个事件处理类的实例到一个或多个部件的接口(Listener)上,例如:

someComponent.addActionListener(instanceOfMyClass);

3、The event handler class has code that implements the methods in the listener interface. For example:

public void actionPerformed(ActionEvent e) {

...//code that reacts to the action...

}

事件处理类实现了监听器(Listener)接口中的方法(抽象方法),例如:

public

void

actionPerformed(ActionEvent e) {

...//code that reacts to the action...

}

事件监听模型如下图所示:

ba708496d6aba0023ab1cd97d13d177d.bmp

同时,其实事情监听的基本内容就是这些了,不过其中应该注意的是JAVA的多监听器的使用:

1a6dc5454110e2b87c583d8f6a025f8a.bmp

在上图可以看出,JAVA中的一个事件清所产生的事件对象可以发送至多个事件监听接口,那么就有如下的程序片块:

1

1fa987a29c6482f53d401256f96355eb.png

ca75c07623e1b494fee67e8f316fc310.gifpublicclassMultiListener 

9b8a8a44dd1c74ae49c20a7cd451974e.pngimplementsActionListener9b8a8a44dd1c74ae49c20a7cd451974e.png{2d18c02628675d0a2c816449d98bda930.png    

9b8a8a44dd1c74ae49c20a7cd451974e.png3d18c02628675d0a2c816449d98bda930.png//where initialization occurs:4d18c02628675d0a2c816449d98bda930.pngbutton1.addActionListener(this);5d18c02628675d0a2c816449d98bda930.png        button2.addActionListener(this);6d18c02628675d0a2c816449d98bda930.png7d18c02628675d0a2c816449d98bda930.png        button2.addActionListener(newEavesdropper(bottomTextArea));88f1ba5b45633e9678d1db480c16cae3f.png    }94f1150b881333f12a311ae9ef34da474.png101fa987a29c6482f53d401256f96355eb.png

ca75c07623e1b494fee67e8f316fc310.gifpublicvoidactionPerformed(ActionEvent e)9b8a8a44dd1c74ae49c20a7cd451974e.png{11d18c02628675d0a2c816449d98bda930.png        topTextArea.append(e.getActionCommand()+newline);128f1ba5b45633e9678d1db480c16cae3f.png    }134f1150b881333f12a311ae9ef34da474.png}144f1150b881333f12a311ae9ef34da474.png151fa987a29c6482f53d401256f96355eb.png

ca75c07623e1b494fee67e8f316fc310.gifclassEavesdropperimplementsActionListener9b8a8a44dd1c74ae49c20a7cd451974e.png{16d18c02628675d0a2c816449d98bda930.png    

9b8a8a44dd1c74ae49c20a7cd451974e.png1797e794c86028c5f5b5461ae5ef440a4c.png

3c6cafce68eb941a00f1998f1d3d3aa6.gifpublicvoidactionPerformed(ActionEvent e)9b8a8a44dd1c74ae49c20a7cd451974e.png{18d18c02628675d0a2c816449d98bda930.png        myTextArea.append(e.getActionCommand()+newline);19ecedf933ec37d714bd4c2545da43add2.png    }208f1ba5b45633e9678d1db480c16cae3f.png}214f1150b881333f12a311ae9ef34da474.png224f1150b881333f12a311ae9ef34da474.png其中的button2分别注册了MultiListener和Eavesdropper两个类的对象,按照前面那个图的意思,那么button2所产生的事件对象会被分别发至MultiListener和Eavesdropper。

呵,大家可以测试下哦!`

可以运行JAVA的测试程序: Run MultiListener

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值