我能够让一个侦听器为 JFrame 工作,但是我在使用 JInternalFrame 做同样的事情时遗漏了一些东西。我从我发现的各种示例中构建了一些基本代码,我希望有人能告诉我在创建内部框架侦听器时我做错了什么。我使代码尽可能简单,当我单击 NewIframe>Open 时,我想做的就是更改内部框架和按钮的大小。
from javax.swing import JButton, JFrame, JPanel,JMenuBar,JMenu,JMenuItem,JInternalFrame,JDesktopPane,JScrollPane
from java.awt.event import ComponentListener,ComponentAdapter
from javax.swing.event import InternalFrameListener,InternalFrameListener
class TestApp(JFrame):
def __init__(self):
JFrame.__init__(self,'Main Window',size=(500, 500),defaultCloseOperation=JFrame.EXIT_ON_CLOSE)
self.createDesktop()
self.createMenus()
def createDesktop(self):
self.desktop = JDesktopPane()
self.contentPane.add(JScrollPane(self.desktop)) # This is the same as self.getContentPane().add(...)
def createMenus(self):
bar = JMenuBar()
self.setJMenuBar(bar)
f = JMenu("New IFrame")
newfile = JMenuItem("Open",actionPerformed = self.createInternalFrame)
f.add(newfile)
bar.add(f)
def createInternalFrame(self, event):
iframe = JInternalFrame('InternalFrame', 1, 1, 1, 1, size=(400, 400), visible=1)
iframe.setLayout(None)
c= JPanel()
c.setBounds(10,10,60,60)
a = JButton("Report",actionPerformed=self.onClick)
c.add(a)
iframe.add(c)
self.desktop.add(iframe)
########
#---iframe.addInternalFrameListener(self.InternalFrameListener)
########
def onClick(self,widget):`your text`
print 'Report'
class listener(ComponentAdapter):
def __init__( self, app ):
self.app = app
def componentResized( self, ce):
"Hey, I'm listening!"
#--Change frame size to (450,450)
#--set button bounds to (20,20,70,70)
if __name__ == '__main__':
a = TestApp()
a.setLocation(100, 100)
a.show()
忘记我没有使用布局管理器并且我没有检查框架是否已经打开 - 我稍后会修复它。我只想让听众工作。谢谢!