【发布时间】:2016-01-23 07:22:46
【问题描述】:
我正在使用 java SWT 进行应用程序开发。
工具中有一个带有一些子节点的 SWT 树,我想删除其中的一些。我尝试使用 remove() 和 removeAll() 方法,但它并没有完全删除该项目。它为 TreeItem 留下了一个空间。
【问题讨论】:
-
您使用的是 Tree + TreeItem 还是 JFace TreeViewer?
我正在使用 java SWT 进行应用程序开发。
工具中有一个带有一些子节点的 SWT 树,我想删除其中的一些。我尝试使用 remove() 和 removeAll() 方法,但它并没有完全删除该项目。它为 TreeItem 留下了一个空间。
【问题讨论】:
根据this post,您应该在要完全删除的树项上使用item.dispose()。
【讨论】:
TreeItem 是 Widget 的后代,其中包含 dispose() 方法。根据文档:
处置与 接收器及其所有后代。调用此方法后, 接收者和所有后代在发送时都会回答 true 消息 isDisposed()。小部件之间的任何内部连接 该树将被移除以促进垃圾收集。这 如果小部件已被释放,则该方法不执行任何操作。
所以treeItem.dispose() 会起作用。
【讨论】: