我在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);
通过使用上面的代码,我可以关闭最后创建的帧。其他框架未关闭。
答案 0 :(得分:1)
看起来你有internalFrame
作为封闭类的字段。然后每次创建一个新的时候都会被覆盖。改为使用局部变量:
// Notice "final"
final JInternalFrame internalFrame = new JInternalFrame("Internal Frame", true, true, true, true);
...
确保每个动作侦听器中的internalFrame
引用上面创建的几行,而不是最后创建的帧。