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