gpt4 book ai didi

java - Component 类的 processEvent() 方法

转载 作者:太空宇宙 更新时间:2023-11-04 07:50:59 25 4
gpt4 key购买 nike

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

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

我发现这种方法非常令人困惑。这些方法的访问说明符为 protected 所以我假设这些仅供内部使用?

  • 这些方法到底有什么用?
  • 处理事件真的需要它们吗?
  • 与通常的 actionPerformed()mouseMoved() 等(在方法定义中添加代码来处理事件而无需调用任何 super 方法)相比,它们是否有任何优势?
  • 需要帮助。简单的文字比技术性的胡言乱语更受赞赏。

    最佳答案

    What exactly are those methods for?

    processEvent() 方法过滤传入它的事件类型。此方法的参数类型为 AWTEvent 类型。过滤后,此方法调用相应的 processXYZEvent() 方法,该方法采用相应的事件对象。

    例如,processMouseEvent(MouseEvent)

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

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

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

    Are they really needed for handling events ?

    他们的作用上面已经提到了。这意味着处理事件需要它们,因为只有在创建和分派(dispatch)事件对象并且这些方法执行此操作时才能处理事件。

    关于java - Component 类的 processEvent() 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14472783/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com