如果检查/取消选中父树,如何选中/取消选中子树项

时间:2014-08-08 06:12:07

标签: java checkbox tree swt

我有一个Check-box Tree View结构,由父节点和子节点组成。

如果选中父树,我想使[父节点]的所有子节点显示为已选中。同样,如果未选中父树,则应取消选中其子项。

1 个答案:

答案 0 :(得分:4)

实现这一目标的最佳方法是使用JFace CheckboxTreeViewer ,因为它具有以下预定义方法来简化任务。

  1. setSubtreeChecked - 设置选择父节点时检查的子元素
  2. 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();