我有一个包含许多TableItems的表(不是tableViewer),当我单击其中一个表项目时,它被选中了。取消选择它的唯一方法是选择另一个TableItem。我想实现一种方法,当用户在没有TableItems的表上单击或重新选择同一TableItem时,取消选择Table选择。
table.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
if(e.item != ItemSelectioner ) {
ItemSelectioner = (TableItem)e.item;
// Blabla
}else {
ItemSelectioner = null;
table.deselectAll();
//blabla
}
}
});
如您所见,正在使用我认为是问题的selectionEvent,并使用:
e.doit = false;
也不能工作。
答案 0 :(得分:1)
不会为表的空白部分生成选择事件,因此您不能使用选择侦听器来执行此操作。
您可以使用鼠标按下侦听器并检查鼠标位置是否有表格项目:
lsa
要在第二次单击某项时清除选择,请使用以下内容:
table.addListener(SWT.MouseDown, event -> {
TableItem item = table.getItem(new Point(event.x, event.y));
if (item == null) { // No table item at the click location?
table.deselectAll();
}
});