public class Scratch {
public static void main(String[] args) {
Dimension d = new Dimension(300,300);
JFrame frame1 = new JFrame("Frame-1");
JFrame frame2 = new JFrame("Frame-2");
frame1.setSize(250,250);
frame2.setSize(d);
frame1.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame2.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame1.setVisible(true);
frame2.setVisible(true);
}
}当我运行这段代码时,两个框架会按预期显示,但当我关闭其中一个框架时,两个框架都会关闭。我想要实现这样的功能:只有我单击“x”的框架关闭,而另一个框架保持打开,直到我单击它的“x”。我该怎么做呢?
发布于 2015-11-18 03:10:42
frame1.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame2.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);"EXIT“告诉JVM停止,这样所有的窗口都会被关闭:
所以你可以使用:
frame1.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
frame2.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);然后,只有您单击的框架才会关闭。当两个框架都关闭时,JVM将退出。
然而,这不是一个好的解决方案。应用程序通常应该只有一个JFrame,然后使用子窗口的JDialog。使用这种方法,代码将是:
JDialog dialog = new JDialog(frame1);
dialog.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);根据您的要求,您可以将对话框设置为模态或非模态。
使用这种方法,当您关闭框架时,JVM将退出,但是当您关闭一个子对话框时,它将保持打开状态。
阅读论坛上关于多个JFrames的问题:The Use of Multiple JFrames: Good or Bad Practice?。它将给出更多关于为什么使用2 JFrames不是一个好主意的想法。
发布于 2015-11-18 02:51:34
public class Scratch {
public static void main(String[] args) {
Dimension d = new Dimension(300,300);
JFrame frame1 = new JFrame("Frame-1");
JFrame frame2 = new JFrame("Frame-2");
frame1.setSize(250,250);
frame2.setSize(d);
frame1.setVisible(true);
frame2.setVisible(true);
}
}你将其中一个添加到你的框架中。
setVisible(false);
dispose();
setDefaultCloseOperation(DISPOSE_ON_CLOSE);https://stackoverflow.com/questions/33764752
复制相似问题