我怎样才能让一个JTree
只听它TreeModel
,而它实际上对用户可见,或者至少让它在相应JFrame
的处理后立即取消注册?
据我所知,JTree
从模型中注销自身的唯一情况是,如果您将其传递给新模型(使用setModel(…)
)。
如果模型是从其他地方引用的,这会导致树不会被垃圾收集。示例:我TreeModel
使用 a实现了WatchService
一个始终保持最新的文件系统树模型。即使模型上的单个侦听器也需要我不断WatchService
通知模型有关文件系统更改的信息,因此它不能被垃圾收集。因此,即使JTree
不再可见,它仍然由模型保存在内存中,仍然需要从 获取更新WatchService
,尽管这些都不再需要了。
我想最好的方法是创建一个新的扩展类JTree
来注册和注销模型。如果是这样,在显示或处置组件时会调用哪些方法?可能addNotify()
并且removeNotify()
是好的候选人?