我正在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的属性吗?
答案 0 :(得分:0)
我相信JFrame.mouseListener是一个只写属性,即没有实现get函数,因此当它传递给self.label.addMouseListener时,无法读取它。 通过执行以下操作解决了这个问题:
self.label.addMouseListener(ScreenMouseListener())