我是SWT的新手。实际上,今天开始研究它。我有一个类型为CheckboxTableViewer的表。我想要做的是每当用户选择该行(即单击该行的任意位置)时,我都希望选中该复选框。目前,我在CheckboxTableViewer上有一个侦听器,如下所示:
diagnosesTableViewer.addCheckStateListener(new ICheckStateListener() {
@Override
public void checkStateChanged(CheckStateChangedEvent event) {
Nomenclature changedStateNomenclature = (Nomenclature) event
.getElement();
if (event.getChecked()) {
selectedNomenclatures.add(changedStateNomenclature);
} else {
selectedNomenclatures.remove(changedStateNomenclature);
}
}
});
我可以通过选中复选框来选择行。但是,即使用户通过单击任意列的该行的任意位置(而不是复选框)来选择该行,我也想选择该复选框。
我猜想对于addSelectionChangedListener,逻辑会在
addSelectionChangedListener
中的某个地方出现。但是我不确定该怎么做。谁能帮我这个? 最佳答案
使用此代码:将选择侦听器添加到表中。 ctv
是您的CheckboxTableViewer
的实例。
我还假设CheckboxTableViewer
仅允许单选而不是多选。
ctv.getTable().addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
int df = ctv.getTable().getSelectionIndex();
ctv.setChecked(ctv.getElementAt(df), !ctv.getChecked(ctv.getElementAt(df)));
}
});