处置 JFrame

Dispose a JFrame

我正在尝试使用以下方法处理我的 JFrame:

private void killJFrame(JFrame jFrame) {
    SwingUtilities.invokeLater(() -> jFrame.dispose());
}

killJFrame() 被执行时,JFrame 变得不可见,看起来它起作用了。 但是,当调用 Frame.getFrames() 时,返回的数组仍然包含在我的应用程序中创建的所有 JFrame

我这样试试,没有区别:

private void killJFrame(JFrame jFrame) {
     jFrame.dispose();
}

我只是觉得如果我把我的 JFrame 放在事件调度线程上会更好。

为什么Frame.getFrames()返回的数组中仍然包含我的JFrames

Java 使用垃圾收集器。处理框架只会使其为垃圾回收做好准备,因此这些 JFrames 一直存在,直到 GC 进入并删除它们。

JFrame.dispose() 仅释放 资源

在Java中,对象是指向一组资源的引用。所以如果内存清空了,引用还是会留下来的。