java - 为什么 Swing JFrame 总是可以访问的?

标签 java swing jframe

为什么在 Swing 应用程序中始终可以访问 JFrame 实例?这不会阻止它被垃圾收集吗?

JFrame frame = new JFrame();
System.out.println(Window.getWindows().length); // says '1'

调用 dispose() 没有帮助。它甚至没有显示。

最佳答案

java.awt.Windows 上没有getWindows 方法,但是有Frame.getFrames() 方法。

但我知道他们两个都用WeakReference来管理这些事情。

基本上这个想法是 Window 和 Frame 类都有一个名为 weakThis 的字段,它是对当前 frame/window 对象的 weakreference。每当需要存储对象时(例如在 appcontext 中),将使用 weakThis 字段代替 this。 (如果您不知道,弱引用不会停止对象的 gc-ing)

编辑:在 1.6 中添加了 Window.getWindows。

关于java - 为什么 Swing JFrame 总是可以访问的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5430207/

相关文章:

java - Visual Studio Code - Java 类路径不完整。只会报告语法错误

java - ListAdapter 修改数据源(这是一个数组列表)

java - 在 Java 中需要带有文件类型过滤器的 FileDialog

Java Swing : Clear JList without triggering listener

java - 如何序列化和恢复函数列表?

java - Varargs Java 模糊调用

java - 不知道如何修复 JFormattedTextField 上的 PropertyChangeListener

java - JFrame 中的标题居中对齐

Java:声明一个变量但说它不存在

java - 为什么图形没有出现在 JFrame 中?