我有一个Check-box Tree View结构,由父节点和子节点组成。
如果选中父树,我想使[父节点]的所有子节点显示为已选中。同样,如果未选中父树,则应取消选中其子项。
答案 0 :(得分:4)
实现这一目标的最佳方法是使用JFace CheckboxTreeViewer ,因为它具有以下预定义方法来简化任务。
setSubtreeChecked
- 设置选择父节点时检查的子元素 getCheckedElements
- 获取所有选中的树元素
final CheckboxTreeViewer treeViewer = new CheckboxTreeViewer(parent);
// When user checks a checkbox in the tree, check all its children
treeViewer.addCheckStateListener(new ICheckStateListener() {
public void checkStateChanged(CheckStateChangedEvent event) {
// If the item is checked . . .
if (event.getChecked()) {
// . . . check all its children
treeViewer.setSubtreeChecked(event.getElement(), true);
}
}
});
// Get the selected elements from the tree
Object[] actuallyChecked = treeViewer.getCheckedElements();