单击表中的空白位置后取消选择TableItem

时间:2018-09-06 12:27:22

标签: java eclipse user-interface swt

我有一个包含许多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;

也不能工作。

1 个答案:

答案 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();
    }
 });