java调用dispose()不会关闭JFrame
我是Swing新手,一直在编写一个应该显示JFrame的非常简单的应用程序。我追踪到下面的代码
窗口不会关闭,JVM将永远运行,必须通过单击X关闭窗口。如果改用JFrame fr = new JFrame("Test")
,dispose方法将完成其工作
在这里调用dispose()时,为什么JFrame不关闭,要怎么做才能实现
import javax.swing.JFrame;
public class HelloWorld {
public static void main(String[] args) {
JFrame fr = new Canvas("Test");
fr.setSize(100, 100);
fr.setVisible(true);
System.out.println("Test");
fr.dispose();
}
}
class Canvas extends JFrame {
Canvas(String title) {
JFrame fr = new JFrame(title);
fr.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
fr.setVisible(true);
}
}
# 1 楼答案
您在这里创建了两个JFrame对象,一个是您将defaultCloseOperation设置为on(fr),另一个是您尝试调用dispose的对象,因此事情不起作用是有道理的。而是只创建一个对象。去掉fr变量。所以改变这个:
为此: