zoukankan      html  css  js  c++  java
  • JAVA中handleEvent和action的区别

    看代码中用到了handleEvent和action,都是对事件进行处理的,觉得这两个方法可以直接合并,于是尝试合并后,发现功能还是有问题,说明两者还是有区别了,查了很久的资料,才基本了解这两者的区别。

    发现网上对其资料比较少,但是查询了JDK_API1.6以后,发现这个方法已经被淘汰了,从JDK1.1开始,processEvent(AWTEvent)取代了HandleEvent, 而action从 JDK 1.1 开始,将此组件作为组件(激发动作事件)上的 ActionListener 来注册。所以接下来的部分,可能不是很实用了,但是对其解释还是尽可能的清晰。

    JAVA中handleEvent和action的区别

    首先从图中可以看出,一个事件产生以后,都会交由HandleEvent()处理,然后HandleEvent()会将部分事件细分给action()处理。

    action()处理的是ACTION_EVENT,即由构件产生的事件;而handleEvent处理所有的小应用程序所接受的事件,由它将事件送给相对应的方法。

    而原有的handleEvent如下:

    public boolean handleEvent(Event evt) {

       switch(evt) {

          case Event.MOUSE_ENTER:

             return mouseEnter(evt,evt.x,evt.y);

          case Event.MOUSE_EXIT:

             return mouseExit(evt,evt.x,evt.y);

          case Event.MOUSE_MOVE:

             return mouseMove(evt,evt.x,evt.y);

          case Event.MOUSE_DRAG:

             return mouseDrag(evt,evt.x,evt.y);

          case Event.MOUSE_UP:

             return mouseUp(evt,evt.x,evt.y);

          case Event.MOUSE_DOWN:

             return mouseDown(evt,evt.x,evt.y);

          case Event.KEY_PRESS:

          case Event.KEY_ACTION:

             return keyDown(evt,evt.key);

          case Event.KEY_RELEASE:

       case Event.KEY_ACTION_RELEASE:

             return keyUp(evt,evt.key);

       case Event.ACTION_EVENT:

             return action(evt,evt.arg);

       case Event.GOT_FOCUS:

             return gotFocus(evt,evt.arg);

       case Event.LOST_FOCUS:

             return lostFocus(evt,evt.arg);

       }

       return false;

    }

    这里明显的说明只有一部分事务会交由action处理,这些事务一般是组建的事件产生的,因此如果不是组建的事件,但将这个事件的处理方法写在了action中,这个事件是不会被正常处理的。

    同时想指出的是,e.id和e.target的问题。在handleEvent函数中,是用e.id区分不同事件的,在action中是用e.target区分事件,这样导致的结果是不同的事件,有不同的e.id,但其有相同的e.target;比如我不想写action()对一个action进行处理,那么是可以把事件的处理放在handleEvent中进行处理的,但是在handleEvent中直接写比如

    if( e.target == button1 )//对按钮button1事件进行处理

    恐怕是要出问题的,但是下面的写法是没有问题的:

    if( e.id == Event.ACTION_EVENT  &&  e.target == button1 )

    这就是关于handleEvent以及action的区别和使用需要注意的地方,表示学习落后了,JDK到了1.6了,我还在JDK1.0中,需要努力了。

  • 相关阅读:
    Delphi程序设计之惯用法
    有关ADO专题
    钓子程序代源
    delphi函数大集合
    2012暑期川西旅游之第四天(丹巴甲居藏寨小金达维日隆)
    主流F2.8标准变焦镜头信息
    2012暑期川西旅游之第一天(成都海螺沟)
    2012暑期川西旅游之第五天(四姑娘山之双桥沟)
    宾得最小饼干DA 40mm F2.8 Limited[转]
    主流F2.8标准变焦镜头信息
  • 原文地址:https://www.cnblogs.com/yuyu666/p/10115192.html
Copyright © 2011-2022 走看看