Слушатель мыши Jython на JLabel приводит к TypeError - PullRequest
2 голосов
/ 21 ноября 2011

Я делаю приложение в Jython, где я пытаюсь захватить события мыши на JLabel. У меня есть JFrame, который содержит JLabel, но когда я пытаюсь добавить слушателя мыши, я получаю:

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 голосов
/ 23 марта 2012

Я считаю, что JFrame.mouseListener является свойством только для записи, то есть не реализована функция get, поэтому, когда она была передана self.label.addMouseListener, она не могла быть прочитана. Решил это, сделав следующее:

self.label.addMouseListener(ScreenMouseListener())
...