有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java处理:“神奇”函数是如何工作的

在处理过程中,如果你想注册一个鼠标事件监听器,你只需要定义一个名为“mousepressed”、“MouseRelease”等的函数,它们“神奇地”变成了事件监听器。我正在使用的controlP5库也会发生这种情况,其中以控件小部件命名的所有函数“神奇地”成为它的事件处理程序。我想知道Java是如何处理这种魔力的?在哪里可以看到有关此模式的源代码或主题。我想知道它的机制,因为我不能在主applet中定义侦听器


共 (1) 个答案

  1. # 1 楼答案

    处理可能会对某些内容使用反射,但在mousePressed()函数的情况下,这是一个简单的继承问题

    Processing包含一个PApplet类,您可以在此处查看其源代码:https://github.com/processing/processing/blob/master/core/src/processing/core/PApplet.java

    在回答这个问题时,PApplet类的第3087行是通过事件处理程序调用的mousePressed(MouseEvent)函数,您可以在这里阅读:http://docs.oracle.com/javase/tutorial/uiswing/events/

    这个mousePressed(MouseEvent)方法调用no arg mousePressed()函数,这是第3084行的一个空函数

    当你写一个处理草图时,你是在秘密地扩展PApplet。在草图中编写mousePressed()函数时,覆盖PApplet类的空mousePressed()函数。现在,当PApplet类从其MouseListener获取MouseEvent时,它调用您的mousePressed函数。这就是继承的原理

    如果你要问一个更具体的问题,请提供一个MCVE来准确地说明你在说什么