我最近实施了CheckboxTreeViewer
在自己的Dialog
。 这工作得很好,到目前为止,除了树不允许我在默认情况下,扩大节点。 它只能当我选中该复选框,因为你可以在下面的图片看到:
这是默认的。 正如你所看到的,它不可能展开节点,虽然它有孩子:
选中复选框后,它的工作原理:
我已经尝试过使用setExpandPreCheckFilters
,但没有成功:
Composite container = (Composite) super.createDialogArea(parent);
tv = new CheckboxTreeViewer(container, SWT.MULTI | SWT.H_SCROLL| SWT.V_SCROLL);
GridData gridData = new GridData(GridData.FILL_BOTH);
tv.getTree().setLayoutData(gridData);
tv.setContentProvider(new FeaturePropertyDialogContentProvider());
tv.setLabelProvider(new FeaturePropertyDialogLabelProvider());
tv.setAutoExpandLevel(2);
tv.setExpandPreCheckFilters(true);
有任何想法吗?
-----------------------------------更新-------------- -----------------------
我发现这个问题的原因。 我forgott在hasChildren方法来检查每一个元素。 现在下面的代码为我工作:
public boolean hasChildren(Object element) {
if (element instanceof ProductLine) {
ProductLine productLine = (ProductLine) element;
if (productLine.getPropertyList() != null) {
return true;
} else {
return false;
}
}
if (element instanceof PropertyList) {
PropertyList propertyList = (PropertyList) element;
if (!(propertyList.getGeneralPlatforms().isEmpty())) {
return true;
} else {
return false;
}
} else if (element instanceof GeneralPlatform) {
GeneralPlatform platform = (GeneralPlatform) element;
if (!(platform.getHardwareElements().isEmpty())) {
return true;
} else {
return false;
}
} else if (element instanceof HardwareElement) {
HardwareElement hw = (HardwareElement) element;
if (!(hw.getHardwareElements().isEmpty())
|| !(hw.getProperties().isEmpty())) {
return true;
} else {
return false;
}
} else {
return false;
}
}
THX对你有所帮助!