java - TreeViewer 中类似节点的更新未正确进行

标签 java swt jface rcp treeviewer

在 TreeViewer 中,有两个相似的节点。他们使用相同的数据对象。当我选择底部节点并修改时,它会更新顶部节点,但底部节点没有变化。

更新前:

Before update

更新后:

After

我在修改节点名称后使用TreeViewer.refresh(problemNode)TreeViewer.refresh(Object element) 的 Javadoc 表示,树从给定元素开始更新。任何原因,为什么它要更新顶部节点?既然它使用相同的数据对象,那么两个节点不应该更新吗?

最佳答案

如果您在树的两个部分中使用相同的对象,您可能会出现此行为。

我所说的“相同对象”是指 equalshashCode 方法使对象看起来相同的任何内容。

您可以通过为树查看器使用 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/

相关文章:

java - 如何评估 String 表达式 Java 中的 >9 数字

java - 如何改变对话框的大小?

java - SWT TableViewer 颜色交替(在某些操作系统中)

eclipse - TableViewer,定义初始排序顺序对数据没有影响

Java Jackson 两次写入对象

java - Tomcat 作为企业服务器

Java - 读取 CSV 文件错误

java - 是否可以制作具有 alpha 值的 Java SWT 组合?

java - Swt 组合框名称/ key 对

java - 如何在paintListener中垂直对齐不同的字体