当我关闭另一个帧时,我的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)会出现,但当我关闭它时,另一个窗口也会关闭,为什么会发生这种情况?

f2.setDefaultCloseOperation(f2.EXIT_ON_CLOSE);

EXIT_ON_CLOSE表示关闭Java虚拟机。

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

f2.setDefaultCloseOperation(f2.DISPOSE_ON_CLOSE);

看看这一行:

f2.setDefaultCloseOperation(f2.EXIT_ON_CLOSE);

这意味着您的应用程序在关闭框架时终止。所以,并不是第二帧是关闭的。整个应用程序终止。

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

最新更新