在 TreeViewer 中,有两个相似的节点。他们使用相同的数据对象。当我选择底部节点并修改时,它会更新顶部节点,但底部节点没有变化。
更新前:
更新后:
我在修改节点名称后使用TreeViewer.refresh(problemNode)
。 TreeViewer.refresh(Object element)
的 Javadoc 表示,树从给定元素开始更新。任何原因,为什么它要更新顶部节点?既然它使用相同的数据对象,那么两个节点不应该更新吗?
最佳答案
如果您在树的两个部分中使用相同的对象,您可能会出现此行为。
我所说的“相同对象”是指 equals
和 hashCode
方法使对象看起来相同的任何内容。
您可以通过为树查看器使用 IElementComparer
类来解决此问题。有了这个你必须实现
public boolean equals(Object a, Object b);
public int hashCode(Object element);
并确保比较器 equals
方法在比较树中的两个元素时返回 false
,并且元素最好具有不同的 hashCode
.
调用TreeViewer.setComparer
告诉树查看器有关比较器的信息。
关于java - TreeViewer 中类似节点的更新未正确进行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37790135/