单击按钮时关闭特定的JInternalFrame

时间:2013-08-17 12:34:55

标签: java swing jinternalframe jdesktoppane

我在JInternalFrame中创建了多个JDesktopPane。每个框架都有一个按钮。我想关闭点击按钮的特定帧。

internalFrame = new JInternalFrame("Internal Frame", true, true, true, true);

    internalFrame.setSize(300, 300);
    internalFrame.setLocation(xPosition * openFrameCount, yPosition
            * openFrameCount);

    internalFrame.setContentPane(createContentPane());
    internalFrame.setJMenuBar(createPopJMenuBar());

    internalFrame.setVisible(true);

    JButton close = new JButton( "Close Me!" );  
    close.addActionListener( new ActionListener() {  
        public void actionPerformed( ActionEvent e ) {
                try {
                    internalFrame.setClosed( true );
                } catch (PropertyVetoException e1) {
                    e1.printStackTrace();
                }
        }  
    } );  
    internalFrame.add( close );  
    jdpDesktop.add(internalFrame);

通过使用上面的代码,我可以关闭最后创建的帧。其他框架未关闭。

1 个答案:

答案 0 :(得分:1)

看起来你有internalFrame作为封闭类的字段。然后每次创建一个新的时候都会被覆盖。改为使用局部变量:

// Notice "final"
final JInternalFrame internalFrame = new JInternalFrame("Internal Frame", true, true, true, true);
...

确保每个动作侦听器中的internalFrame引用上面创建的几行,而不是最后创建的帧。