处理:"magic"函数如何工作



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

处理过程可能会对某些内容使用反射,但对于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)方法调用无参数的mousePressed()函数,该函数在第3084行是一个空函数。

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

如果你问的是一个更具体的问题,请提供一个MCVE,以准确地展示你在谈论什么。

最新更新