closures一个JFrame而不closures另一个?
我想同时显示两个(或更多) JFrames 。
当我closures其中一个(使用默认的closuresbutton)时,其他框架应该仍然可见。
我怎样才能做到这一点?
如果您不希望应用程序在JFrame
closures时终止,请使用
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); } } }); } }