closures一个JFrame而不closures另一个?

我想同时显示两个(或更多) JFrames
当我closures其中一个(使用默认的closuresbutton)时,其他框架应该仍然可见。

我怎样才能做到这一点?

如果您希望应用程序在JFrameclosures时终止,请使用

 setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE) 

代替

 setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 

从文档 :

  • DO_NOTHING_ON_CLOSE (在WindowConstants中定义):不要做任何事情; 要求程序在注册的WindowListener对象的windowClosing方法中处理操作。
  • HIDE_ON_CLOSE (在WindowConstants中定义):在调用任何已注册的WindowListener对象后自动隐藏框架。
  • DISPOSE_ON_CLOSE (在WindowConstants中定义):在调用任何已注册的WindowListener对象后自动隐藏和处理该框架。
  • EXIT_ON_CLOSE (在JFrame中定义):使用System exit方法退出应用程序。 仅在应用程序中使用这个。

在这个问题被澄清之前,这是我的回答,可能仍然有用:

如果要再次显示相同的帧,则可以在JFrame上使用setVisible(false)
否则,调用dispose()来删除所有的本地屏幕资源 。

它对你有帮助吗?

 import java.awt.BorderLayout; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.SwingUtilities; public class TwoJFrames { public static void main(String[] args) { int nb = 4; if (args != null && args.length > 0) { nb = Integer.parseInt(args[0]); } final int frameCount = nb; SwingUtilities.invokeLater(new Runnable() { public void run() { for (int i = 0; i < frameCount; i++) { JFrame frame = new JFrame("Frame number " + i); frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); JPanel p = new JPanel(new BorderLayout()); p.add(new JLabel("Click on the corner to close..."), BorderLayout.CENTER); frame.setContentPane(p); frame.setSize(200, 200); frame.setLocation(100 + 20 * i, 100 + 20 * i); frame.setVisible(true); } } }); } }