import javax ### For fun I made all the listener method implementations external ### THIS LISTENER WORKS def internalFrameActived( e): print "Listener Event: Frame Activated" def internalFrameDeactivated(e): print "Listener Event: Frame Deactivated" def internalFrameIconified(e): print "Listener Event:Frame Iconified" def internalFrameDeiconified(e): print "Listener Event:Frame Deiconified" def internalFrameOpened(e): print "Listener Event: Frame Opened" def internalFrameClosing(e): print "Listener Event: Frame Closing" def internalFrameClosed(e): print "Listener Event: Frame Closed" class MyInternalFrameListener(javax.swing.event.InternalFrameListener): def __init__(self): self.internalFrameActived = internalFrameActived self.internalFrameDeactivated = internalFrameDeactivated self.internalFrameIconified = internalFrameIconified self.internalFrameDeiconified = internalFrameDeiconified self.internalFrameOpened = internalFrameOpened self.internalFrameClosing = internalFrameClosing self.internalFrameClosed = internalFrameClosed ### For fun I made an adapter method implementation external ### THIS ADAPTER LISTENER DOES NOT WORK def xinternalFrameClosing(e): print "External Adapter Event: Frame Closing" class MyInternalFrameAdapterExternalMethods(javax.swing.event.InternalFrameAdapter): def __init__(self): self.internalFrameClosing = xinternalFrameClosing ### I implemented the method within the class ### THIS ADAPTER LISTENER WORKS class MyInternalFrameAdapter(javax.swing.event.InternalFrameAdapter): def __init__(self): pass def internalFrameClosing(self, e): print "Adapter Event: Frame Closing" ############################################################# jframe = javax.swing.JFrame( "**** JFrame **** " ) jframe.setSize(1100,900) desktop = javax.swing.JDesktopPane() desktop.setDragMode(javax.swing.JDesktopPane.OUTLINE_DRAG_MODE); jframe.getContentPane().add( javax.swing.JScrollPane(desktop) ) internalFrame = javax.swing.JInternalFrame("*** JInternalFrame : using InternalFrameAdapter ****",True,True,True,True) internalFrame.addInternalFrameListener( MyInternalFrameAdapter() ) desktop.add( internalFrame ) internalFrame.setBounds(100, 100, 400, 400) internalFrame.setVisible( True ) internalFrame = javax.swing.JInternalFrame("*** JInternalFrame : using InternalFrameListener ****",True,True,True,True) internalFrame.addInternalFrameListener( MyInternalFrameListener() ) desktop.add( internalFrame ) internalFrame.setBounds(600, 600, 400, 400) internalFrame.setVisible(True) internalFrame = javax.swing.JInternalFrame("*** JInternalFrame : using InternalFrameAdapterExternalMethods ****",True,True,True,True) internalFrame.addInternalFrameListener( MyInternalFrameAdapterExternalMethods() ) desktop.add( internalFrame ) internalFrame.setBounds(0, 0, 300, 300) internalFrame.setVisible(True) jframe.show()