关闭

java学习篇-------对事件的理解

188人阅读 评论(0) 收藏 举报
分类:
java事件驱动程序====


事件,就是用户的一个操作。
事件就是用户对组件的一个操作。
如何理解事件监听器???


事件监听器调用事件处理方法。
由事件监听器来监听着按钮是否接受来自用户的单击操作。
事件监听器一直在监听。


如何从汇编的角度理解: 事件监听器???






对下面这个程序做详细的分析:






import java.awt.event.*;
import java.awt.*;


public class TestButton
{
public static void main(String[] args)
{
Frame f=new Frame(); //  创建了一个框架对象。
Button bn=new Button("OK!"); // 创建了一个按钮对象。

f.add(bn); // 调用框架的add()方法,把按钮对象,添加到框架中。
A aa=new A();
bn.addActionListener(aa); // 向鼠标按钮添加一个动作监听器。用aa来监听bn按钮。
即:告诉bn可以产生aa事件。
f.pack();
f.setVisible(true);


}


}






class  A implements ActionListener
{
public void actionPerformed(ActionListener)
{
System.out.println("今天天气不错!");
}



}


点击按钮A,则触发的这个点击事件必须,交给按钮A去处理。不然就是造成混乱。


不同的方法,处理不同的事件。








事件的处理步骤:
()
假设事件是XXXA
:
()1.向事件源注册某种事件的事件监听器对象  //  addXXXAListener(..);
()2.设计好可以处理这种事件的事件监听器
class 类名 implements  XXXAListener
{
重写XXXAListener接口中的方法

}

implement  ['ɪmplɪm(ə)nt] 实施,执行;实现,使生效
n. 工具,器具;手段




说明:要想设计出能够处理XXXA事件的监听器,只需要编写出实现XXXAListener接口的类就行啦。
 因为XXXAListener接口中已经定义了可以处理XXXA事件的方法。
 
 
()默认情况下,事件源不会自动产生任何事件,程序员需要做两件事:
:告诉事件源可以地洞产生哪类事件,即:向事件源注册某种事件的事件监听器对象。
:设计好可以处理这种事件的事件监听器。
 
 
 
 当用户对事件源进行操作时,事件源就会自动产生事件,事件源就会自动把产生的事件封装成
一个事件对象,事件源就会自动把封装好的事件对象传递给事件监听器。


事件监听器收到事件源发送过来的事件时,事件监听器就会自动调用相应的事件处理方法来对该事件进行相应的处理。




很重要的一点就是:
什么样的事件,用什么样的方法处理。
即: A class的对象事件,当被触发产生时,编译器就会调用,A class的方法来处理该事件。
根据事件类型,去寻找相应的处理方法。而处理方法是在事件监听器接口中定义的。


其实,事件的处理就是一次函数调用。


用我自己的方式理解事件。
:::
:::
()每个对象都有它的堆栈和运行空间,以及相应的表结构。表中记录有与该对象有关的信息。
而所谓的给某一个源对象注册一个事件,其实就是:在给对象的相应的表结构中,
添加:   事件A   |   事件A的处理方法的函数入口地址
于是,当一个事件A,产生时,那么,给对象通过查表,可以看到该事件A的处理方法函数的入口地址


因此,所谓的注册就是,告诉编译器到那里去找它的处理方法,即:让该组件对象记录下,监听器在内存中的函数入口点地址。


还有一个问题:


如何理解事件监听器接口???















































































0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:236237次
    • 积分:7580
    • 等级:
    • 排名:第2809名
    • 原创:490篇
    • 转载:337篇
    • 译文:2篇
    • 评论:1条
    最新评论