From: Byron H. <byr...@we...> - 2003-03-12 05:27:07
|
I'm getting the following error but I'm not sure to get around it. TypeError: addObserver(): 1st arg can't be coerced to java.util.Observer The JAxis class is causing the problem. Note how I implement the Observable interface butdon't subclass it (multiple inheritance problem). class Axis(util.Observable): def change(self): self.super__setChanged() class JAxis(swing.JPanel): def setModel(self, ObervableAxis): self.axis = ObservableAxis self.axis.addObserver(self) def update(self, Observable, arg): self.repaint() Regards Byron |
From: Oti <oh...@ya...> - 2003-03-14 05:22:25
|
[ Byron Hammond ] > I'm getting the following error but I'm not sure to get around it. > TypeError: addObserver(): 1st arg can't be coerced to > java.util.Observer > > The JAxis class is causing the problem. Note how I implement the > Observable interface butdon't subclass it (multiple inheritance > problem). If just implementing an interface, you don't get a multiple inheritance problem (just like in java). > class Axis(util.Observable): > def change(self): > self.super__setChanged() > > class JAxis(swing.JPanel): > def setModel(self, ObervableAxis): > self.axis = ObservableAxis > self.axis.addObserver(self) > > def update(self, Observable, arg): > self.repaint() I tried to guess what you want to do. If I save the following code into a file called JAxis.py and then call jython JAxis.py it works (for me): from java.util import Observable from java.util import Observer from javax.swing import JPanel class ObservableAxis(Observable): def change(self): self.super__setChanged() class JAxis(JPanel, Observer): def setModel(self, observableAxis): self.axis = observableAxis self.axis.addObserver(self) print 'JAxis: model set to %s' % observableAxis def update(self, Observable, arg): self.repaint() if __name__ == '__main__': oa = ObservableAxis() ja = JAxis() ja.setModel(oa) Hope this helped, and best wishes Oti. __________________________________________________ Do you Yahoo!? Yahoo! Web Hosting - establish your business online http://webhosting.yahoo.com |