在不使用 'ctrl' 按钮的情况下在 CheckboxTreeViewer 上选择多行

Selecting multiple rows on CheckboxTreeViewer without using the 'ctrl' button

我使用 JFace 库创建了一个 checkboxtreeviewer。我创建了树查看器如下

Tree tree = new Tree(parent,SWT.CHECK | SWT.BORDER | SWT.H_SCROLL | SWT.V_SCROLL | SWT.FULL_SELECTION | SWT.MULTI);

CheckboxTreeViewer checkboxTreeViewer = new CheckboxTreeViewer(tree);

SWT.MULTI 允许我使用 'CTRL 键 select(突出显示)树的多行。

有没有一种方法我们可以 select 多行而不使用 ctrl 键。我知道的一种方法是使用 setSelection() 方法,该方法不能使用,因为当用户从一行转到另一行时会导致闪烁效果,Tree.java 会取消 select 所有现有行然后突出显示在 setSelection 方法中调用的行。

我觉得代码 here 对所有行造成了 deselect,然后在用户 selected 的行上造成了 select。

您可以在完成选择设置之前关闭树的重绘,这应该会减少闪烁:

checkboxTreeViewer.getControl().setRedraw(false);

checkboxTreeViewer.setSelection(....);

checkboxTreeViewer.getControl().setRedraw(true);