我有一个带有图形用户界面的程序,其中的段可以很大,并包含许多对象。我的程序的一个功能是“关闭”那个部分并创建一个新的部分。
这整个片段仅通过一个JPanel和一个ArrayList附加到程序。如果我将这两个设置为null,应该没有办法访问任何JPanels子代(其中一个是扩展图形用户界面组件的复杂对象,但也包含许多变量)。
如果我没记错,所有的JPanels孩子都会被垃圾收集器回收。
然而,孩子的孩子会发生什么呢?我有一些“家庭”,可以追溯到5-6代。它们只会在GC的第五次(或第六次)通过时被删除,还是会检测到整个“家族”无法访问并立即收集(或在第一次通过时)?
编辑:另一个小问题:对于swing组件,有没有一种方法可以移除它的所有子组件?
发布于 2012-09-12 08:13:26
发布于 2012-09-12 04:49:50
对你的问题的评论很好地解决了删除问题。但是,如果您仍然对在不删除组件的情况下删除组件的子级感到好奇,答案是否定的,如JComponent documentation中所示(我假设您使用的是Java7,如果不是,您可以很容易地更改为正确的Java版本)。如果您想快速、轻松地从组件中删除子项,而不删除组件本身,我建议您只需重新初始化组件即可。
https://stackoverflow.com/questions/12376882
复制相似问题