我有一个项目,我正在处理一个项目中需要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),但是当我关闭它时,另一个窗口也会关闭,为什么会这样呢?
答案 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);
这意味着关闭框架时应用程序将终止。所以,不是第二帧被关闭。整个申请被终止。
如果您不希望此行为,请删除此行。