我对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。但我不知道该怎么做。任何人都可以帮我这个吗?
答案 0 :(得分:2)
使用此代码:向表中添加选择侦听器。 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)));
}
});