Jython jInternalFrame 监听器

问题描述 投票:0回答:0

我能够让一个侦听器为 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()

忘记我没有使用布局管理器并且我没有检查框架是否已经打开 - 我稍后会修复它。我只想让听众工作。谢谢!

listener jython jinternalframe
© www.soinside.com 2019 - 2024. All rights reserved.