处置 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中,对象是指向一组资源的引用。所以如果内存清空了,引用还是会留下来的。
我正在尝试使用以下方法处理我的 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中,对象是指向一组资源的引用。所以如果内存清空了,引用还是会留下来的。