JLabel上的Jython鼠标侦听器导致TypeError

时间:2011-11-21 13:30:59

标签: swing mouseevent awt jython

我正在Jython中创建一个应用程序,我尝试在JLabel上捕获鼠标事件。我有一个包含JLabel的JFrame,但当我尝试添加一个鼠标监听器时,我得到:

TypeError: write only attribute

主窗口:

class Commander(JFrame):
    ...
    self.image = ImageIcon()
    self.label = JLabel(self.image)
    self.mouseListener = ScreenMouseListener()
    self.label.addMouseListener(self.mouseListener) <- This line causes the TypeError
    ...

鼠标侦听器扩展了MouseAdapter:

class ScreenMouseListener(MouseAdapter):
    def mousePressed(self, event):
        print "Mouse pressed"

搜索错误会导致我PyBeanEvent,但我不明白为什么会这样。哪个属性是只写的?

编辑:删除导致错误的行后,我注意到调用了mousePressed函数! “mouseListener”可能是JFrame的属性吗?

1 个答案:

答案 0 :(得分:0)

我相信JFrame.mouseListener是一个只写属性,即没有实现get函数,因此当它传递给self.label.addMouseListener时,无法读取它。 通过执行以下操作解决了这个问题:

self.label.addMouseListener(ScreenMouseListener())