0

JInternalFrameJDesktopPane. 每个框架都有一个按钮。我想关闭单击按钮的特定框架。

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);

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

4

1 回答 1

1

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

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

这确保了internalFramein each action listener 引用上面几行创建的那个,而不是最后创建的帧。

于 2013-08-17T12:38:18.523 回答