我正在处理一个项目,该项目需要在一个程序中使用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);
这意味着您的应用程序在关闭框架时终止。所以,并不是第二帧是关闭的。整个应用程序终止。
如果您不希望此行为,请删除此行。