From: D-Man <ds...@ri...> - 2001-04-05 14:36:00
|
On Thu, Apr 05, 2001 at 08:10:50AM -0400, cindy wrote: | I thought I couldn't access the method enableEvents() by inheriting JFrame. | The reason being is that this method is protected. I concluded that I have to | inherit Component to get access to this mrthod. Therefore, the tree structure | below and inheritance from JFrame wouldn't work for the method enableEvents(). | | Is this correct? Mostly. 'protected' (in Java, it is slightly different in C++) means that only subclasses and classes in the same package can access it. JFrame is a subclass of Component, and your class is a subclass of JFrame, therefore your class is a subclass of Component. You are correct up to the point where you say "inheritance from JFrame wouldn't work". If you've done some work in discrete math or logic this is basically the following axiom : if A -> B and B -> C then A -> C Here is an example : >>> import javax >>> import java >>> class MyFrame( javax.swing.JFrame ) : ... def __init__( self ) : ... self.super__enableEvents( java.awt.AWTEvent.WINDOW_EVENT_MASK ) ... def processEvent( self , event ) : ... print "got an event" ... >>> aframe = MyFrame() >>> aframe.getContentPane().add( javax.swing.JLabel( "Jython is cool" ) ) javax.swing.JLabel[,0,0,0x0,invalid,alignmentX=0.0,alignmentY=null,border=,flags =0,maximumSize=,minimumSize=,preferredSize=,defaultIcon=,disabledIcon=,horizonta lAlignment=,horizontalTextPosition=,iconTextGap=4,labelFor=,text=Jython is cool, verticalAlignment=CENTER,verticalTextPosition=CENTER] >>> aframe.show() got an event >>> got an event got an event This was an interactive interpreter session of mine. As you can see here, I didn't define getContentPane or setVisible, but they worked. This is because MyFrame is-a JFrame (is-a JComponent ... is-a Component ...). Through inheritance, instances of MyFrame ('aframe') have all of those public and protected members (functions and data). Also, at the end there you can see that processEvent was called when the frame was shown, when I gave it the focus (with the mouse) and when I removed the focus (I clicked in the terminal window to copy the text from). Perhaps the following tutorial sections may help you? http://python.org/doc/current/tut/node11.html http://www.crosswinds.net/~agauld/tutclass.htm HTH, -D |