1

在处理各种事件时,我的一般策略是创建一个xxxHandlerMouseHandler,WindowHandler等这样的类,它扩展了xxxAdapterJava 提供的相应类。

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

我发现这种方法非常令人困惑。这些方法具有访问说明符,protected因此我假设这些方法仅供内部使用?

  • 这些方法到底是做什么用的?
  • 他们真的需要处理事件吗?
  • actionPerformed()与通常的 ,等相比,它们是否提供任何好处mouseMoved(),您可以在其中添加代码来处理方法定义中的事件而不调用任何super方法?
  • 需要帮助。简单的词受到高度赞赏,而不是技术性的胡言乱语。

    4

    1 回答 1

    1

    这些方法到底是做什么用的?

    processEvent()方法过滤到达它的事件类型。此方法的参数是 typeAWTEvent类型。过滤后,该方法调用相应的processXYZEvent()方法,该方法获取相应的事件对象。

    例如,processMouseEvent(MouseEvent)

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

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

    enableEvents()方法决定将什么事件提供给该processEvent()方法。此方法不能被覆盖,因为它是最终的。然而,这可以在类的子类中访问,Component以决定组件支持什么类型的事件。

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

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

    于 2013-07-31T15:58:12.757 回答