2011-11-21 40 views
2

我正在用Jython的應用程序,我試圖捕捉一個JLabel鼠標事件。我有一個包含一個JLabel一個JFrame,但是當我嘗試將鼠標監聽器添加到它,我得到:Jython的鼠標監聽導致類型錯誤

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

我相信JFrame.mouseListener是一個只寫屬性,即還沒有實現get函數,所以當它傳遞給self.label.addMouseListener,它不能被讀取。 解決它通過做,而不是:

self.label.addMouseListener(ScreenMouseListener())