当前位置:  开发笔记 > 编程语言 > 正文

使用Jython和Swing处理事件

如何解决《使用Jython和Swing处理事件》经验,为你挑选了1个好方法。

我正在使用来自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))

它有效,但优雅已经消失.所有这一切只是因为被调用的方法需要从某个地方进行引用.还有其他方法吗?



1> jfs..:
JButton("Push me", actionPerformed=self.nameOfMethodToCall)

以下是您引用的文章中的修改示例:

from javax.swing import JButton, JFrame

class MyFrame(JFrame):
    def __init__(self):
        JFrame.__init__(self, "Hello Jython")
        button = JButton("Hello", actionPerformed=self.hello)
        self.add(button)

        self.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE)
        self.setSize(300, 300)
        self.show()

    def hello(self, event):
        print "Hello, world!"

if __name__=="__main__":
    MyFrame()

推荐阅读
linjiabin43
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有