首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JFrame:当我尝试只关闭其中一个框架时,所有框架都会关闭

JFrame:当我尝试只关闭其中一个框架时,所有框架都会关闭
EN

Stack Overflow用户
提问于 2015-11-18 02:49:50
回答 2查看 933关注 0票数 1
代码语言:javascript
复制
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”。我该怎么做呢?

EN

回答 2

Stack Overflow用户

发布于 2015-11-18 03:10:42

代码语言:javascript
复制
    frame1.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame2.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

"EXIT“告诉JVM停止,这样所有的窗口都会被关闭:

所以你可以使用:

代码语言:javascript
复制
    frame1.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
    frame2.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);

然后,只有您单击的框架才会关闭。当两个框架都关闭时,JVM将退出。

然而,这不是一个好的解决方案。应用程序通常应该只有一个JFrame,然后使用子窗口的JDialog。使用这种方法,代码将是:

代码语言:javascript
复制
JDialog dialog = new JDialog(frame1);
dialog.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);

根据您的要求,您可以将对话框设置为模态或非模态。

使用这种方法,当您关闭框架时,JVM将退出,但是当您关闭一个子对话框时,它将保持打开状态。

阅读论坛上关于多个JFrames的问题:The Use of Multiple JFrames: Good or Bad Practice?。它将给出更多关于为什么使用2 JFrames不是一个好主意的想法。

票数 4
EN

Stack Overflow用户

发布于 2015-11-18 02:51:34

代码语言:javascript
复制
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);
    }
}

你将其中一个添加到你的框架中。

代码语言:javascript
复制
setVisible(false);
dispose(); 
setDefaultCloseOperation(DISPOSE_ON_CLOSE);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33764752

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档