gpt4 book ai didi

java - JFrame : All the frames close when I try to close just one of them

转载 作者:行者123 更新时间:2023-11-29 03:02:50 25 4
gpt4 key购买 nike

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”。我该怎么做?

最佳答案

    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 不是一个好主意的想法。

关于java - JFrame : All the frames close when I try to close just one of them,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33764752/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com