Component类的processEvent()方法

时间:2013-01-23 05:02:41

标签: java event-handling awt event-listener

在处理各种事件时,我的一般政策是创建一个xxxHandler类,如MouseHandlerWindowHandler等,它扩展了Java提供的相应xxxAdapter类。

我刚刚讨论了一些关于处理事件的其他文本,它说每当你扩展任何EventListener接口时,比如ActionListener,你必须在构造函数中调用enableEvents(AWTEvent e)方法,每当生成事件时调用super.processXXXEvent()

我发现这种方法非常混乱。这些方法的访问说明符为protected,所以我假设它们仅供内部使用?

  • 这些方法究竟是什么?
  • 他们真的需要处理事件吗?
  • 他们是否提供了优于常规actionPerformed()mouseMoved()等的任何好处,您可以在其中添加代码来处理方法定义中的事件而无需调用任何super方法?
  • 需要帮助。简单的单词是高度赞赏而不是技术的mumbo-jumbo。

    1 个答案:

    答案 0 :(得分:1)

      

    这些方法究竟是什么?

    processEvent()方法会过滤发送给它的事件类型。此方法的参数是AWTEvent类型的类型。 过滤后,此方法调用相应的processXYZEvent()方法,该方法获取相应的事件对象。

    例如,processMouseEvent(MouseEvent)

    processXYZEvent()方法通过将事件对象传递给处理程序来通知相应的侦听器。

    例如,processMouseEvent(MouseEvent)通知已注册的鼠标侦听器。

    enableEvents()方法决定向processEvent()方法提供哪些事件。这种方法不能覆盖,因为它是最终的。但是,可以在Component类的子类中访问它以确定组件支持的事件类型。

      

    他们真的需要处理事件吗?

    他们的角色如上所述。这意味着处理事件需要它们,因为您只能在创建和分派事件对象时处理事件,并且这些方法会执行此操作。