CheckboxTreeViewer 在不同分支中具有相同元素的多个实例
CheckboxTreeViewer with multiple instances of same element in different branches
我有一个 CheckboxTreeViewer
,在不同的分支中有多个相同元素的实例。我的问题是在不同分支中实现 setSubtreeChecked
元素时,如果它们在不同分支中的相同元素下,则会被检查。结构如下:
-Parent1
-MidLevel1
-BottomLevel1
-BottomLevel2
-MidLevel2
-BottomLevel1
-BottomLevel2
- Parent2
-MidLevel1
-BottomLevel1
-BottomLevel2
-MidLevel2
-BottomLevel1
-BottomLevel2
因此检查Parent2 下的元素MidLevel1 将检查Parent1 下MidLevel1 下的所有元素。
同样在这种结构下,当使用 setChecked(element, false)
取消选中树中的所有内容时,当使用 getCheckedElements
获取元素时,并非每个元素都被取消选中。
您必须让您的内容提供者return编辑的对象看起来与树查看器不同。
您可以通过让您的内容提供者 return 为树中的每个对象设置一些唯一的对象(而不是为树的多个分支使用相同的对象)来做到这一点。
或者,您可以使用实现 IElementComparer
的 class 调用查看器 setComparer
方法。这让您可以提供
boolean equals(Object a, Object b);
int hashCode(Object element);
区分树中对象的方法。在这种情况下,这可能更难使用。
我有一个 CheckboxTreeViewer
,在不同的分支中有多个相同元素的实例。我的问题是在不同分支中实现 setSubtreeChecked
元素时,如果它们在不同分支中的相同元素下,则会被检查。结构如下:
-Parent1
-MidLevel1
-BottomLevel1
-BottomLevel2
-MidLevel2
-BottomLevel1
-BottomLevel2
- Parent2
-MidLevel1
-BottomLevel1
-BottomLevel2
-MidLevel2
-BottomLevel1
-BottomLevel2
因此检查Parent2 下的元素MidLevel1 将检查Parent1 下MidLevel1 下的所有元素。
同样在这种结构下,当使用 setChecked(element, false)
取消选中树中的所有内容时,当使用 getCheckedElements
获取元素时,并非每个元素都被取消选中。
您必须让您的内容提供者return编辑的对象看起来与树查看器不同。
您可以通过让您的内容提供者 return 为树中的每个对象设置一些唯一的对象(而不是为树的多个分支使用相同的对象)来做到这一点。
或者,您可以使用实现 IElementComparer
的 class 调用查看器 setComparer
方法。这让您可以提供
boolean equals(Object a, Object b);
int hashCode(Object element);
区分树中对象的方法。在这种情况下,这可能更难使用。