调用dispose()不会关闭JFrame

时间:2015-05-23 17:39:23

标签: java swing

我是Swing的新手,并且陷入了编写一个应该显示JFrame的非常简单的应用程序的困境。我将其跟踪到下面的代码。

窗口没有关闭,JVM永远运行,必须通过单击X关闭窗口。如果我改为使用addNumber(A.coolNumber()); ,则dispose方法可以完成它的工作。

为什么在这里调用dispose()时JFrame不会关闭,该怎么做才能实现呢?

JFrame fr = new JFrame("Test")

1 个答案:

答案 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);
    }
}