当我关闭另一帧时,我的JFrame关闭了

时间:2014-10-20 18:41:36

标签: java swing jframe

我有一个项目,我正在处理一个项目中需要2个JFrame的项目。问题是,当我关闭一个时,另一个也将关闭,所以我做了一个测试课,看看问题是什么,我仍然无法弄清楚,所以这里是我的测试用例:

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class frameTest {

    public static void main(String[] args) {

        JFrame f1 = new JFrame();
        JButton open = new JButton("open");
        open.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent arg0) {
                JFrame f2 = new JFrame();
                f2.setVisible(true);
                f2.setDefaultCloseOperation(f2.EXIT_ON_CLOSE);
                f2.setSize(200, 200);
            }
        });

        f1.setDefaultCloseOperation(f1.EXIT_ON_CLOSE);
        f1.setVisible(true);
        f1.setSize(500, 500);
        f1.add(open);
    }
}

当我点击打开按钮时会出现弹出窗口(f2),但是当我关闭它时,另一个窗口也会关闭,为什么会这样呢?

2 个答案:

答案 0 :(得分:3)

f2.setDefaultCloseOperation(f2.EXIT_ON_CLOSE);

EXIT_ON_CLOSE表示关闭Java VM。

如果您只想关闭当前帧,请使用:

f2.setDefaultCloseOperation(f2.DISPOSE_ON_CLOSE);

答案 1 :(得分:3)

看看这一行:

f2.setDefaultCloseOperation(f2.EXIT_ON_CLOSE);

这意味着关闭框架时应用程序将终止。所以,不是第二帧被关闭。整个申请被终止。

如果您不希望此行为,请删除此行。

相关问题