单击行时设置CheckboxTreeViewer的复选框

时间:2016-06-17 08:42:39

标签: java checkbox swt rcp

当我选择行/项时,我正在寻找检查CheckBoxTreeViewer复选框的通用方法。 我找到了关于CheckBoxTableViewer的similar question,答案对我有帮助,但它不适用于CheckBoxTreeViewer。我假设,我必须使用ISelectionChangedListener。

2 个答案:

答案 0 :(得分:3)

您可以添加ISelectionChangedListener并从SelectionChangedEvent接收所选对象。然后您可以为此对象设置检查状态,如下所示:

viewer.addSelectionChangedListener(new ISelectionChangedListener() {
        @Override
        public void selectionChanged(SelectionChangedEvent event) {
            Object selection = ((StructuredSelection)event.getSelection()).getFirstElement();
            viewer.setChecked(selection, true);
        }
    });

答案 1 :(得分:1)

我通过调用CheckStateListener解决了灰色状态的问题,CheckStateListener负责维护元素的已检查和灰色状态。

public void selectionChanged(final SelectionChangedEvent event) {
    Object selection = ((StructuredSelection) event.getSelection()).getFirstElement();
    if (selection != null) {
        boolean state = !checkboxTreeViewer.getChecked(selection);
        checkboxTreeViewer.setChecked(selection, state);
        checkboxTreeViewer.setSelection(StructuredSelection.EMPTY);
        checkStateListener.checkStateChanged(new CheckStateChangedEvent((ICheckable) event.getSource(), selection,
            state));
    }

}