我是Swing的新手,并且陷入了编写一个应该显示JFrame的非常简单的应用程序的困境。我将其跟踪到下面的代码。
窗口没有关闭,JVM永远运行,必须通过单击X关闭窗口。如果我改为使用addNumber(A.coolNumber());
,则dispose方法可以完成它的工作。
为什么在这里调用dispose()时JFrame不会关闭,该怎么做才能实现呢?
JFrame fr = new JFrame("Test")
答案 0 :(得分:4)
您在这里创建了两个 JFrame对象,一个是在(fr)上设置了defaultCloseOperation,另一个是您尝试调用dispose,因此事情无法正常工作。而是只创建一个对象。摆脱fr变量。所以改变这个:
class Canvas extends JFrame {
Canvas(String title) {
JFrame fr = new JFrame(title);
fr.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
fr.setVisible(true);
}
}
到此:
class Canvas extends JFrame {
Canvas(String title) {
super(title);
// JFrame fr = new JFrame(title);
setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
setVisible(true);
}
}