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'。我该怎么做?
答案 0 :(得分:4)
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将在您关闭框架时退出,但在关闭子对话框时它将保持打开状态。
阅读此论坛关于多个JFrame的问题:The Use of Multiple JFrames: Good or Bad Practice?。它将更多地考虑为什么使用2个JFrame不是一个好主意。
答案 1 :(得分:0)
await
你将其中一个添加到你的框架中。
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);
}
}