我正在使用 Jython 的 Swing 制作一个 GUI。Jython 的事件处理似乎特别优雅,刚刚设置
JButton("Push me", actionPerformed = nameOfFunctionToCall)
然而,在课堂上尝试同样的事情变得很困难。天真地尝试
JButton("Push me", actionPerformed = nameOfMethodToCall)
或者
JButton("Push me", actionPerformed = nameOfMethodToCall(self))
从类的 GUI 构造方法不起作用,因为要调用的方法的第一个参数应该是self,以便访问类的数据成员,另一方面,不可能通过通过 AWT 事件队列传递给事件处理程序的任何参数。唯一的选择似乎是使用 lambda(如http://www.javalobby.org/articles/jython/所建议的那样),结果如下:
JButton("Push me", actionPerformed = lambda evt : ClassName.nameOfMethodToCall(self))
它有效,但优雅消失了。这一切只是因为被调用的方法需要从某个地方进行自我引用。有没有其他方法可以解决这个问题?