删除选择后的SWT选择事件

时间:2015-02-11 16:42:57

标签: java swt

我正在制作一个简单的菜单来删除树上的项目。但是,删除项后,树不会收到选择事件,因此,侦听器中的代码不会执行(侦听器,在完整代码中,更新UI的一部分)。

我简化了下面的代码,省略了细节。它是这样的:

tree.addListener (SWT.Selection, new Listener(){
     public void handleEvent(Event e) {
     (....)
    }
}

我也试过这个:

    tree.addSelectionListener (new SelectionListener(){
        public void widgetDefaultSelected(SelectionEvent e){
            (...)
        }
        public void widgetSelected(SelectionEvent e) {
            (...)
        }
    }

在我的菜单操作(删除选择)上,有以下内容:

    TreeItem [] selected = tree.getSelection();
    tree.deselectAll();
    if (selected.length > 0)
    {
      for( TreeItem i : selected){
          i.dispose();
      }
    }

删除选择后,我的选择侦听器不会触发。如果我使用ctrl + click组合取消选择所有这些,它会激发。

我该怎么办?有没有办法在删除itens之后将SWT.Selection事件触发到树中,还是应该将侦听器内的代码隔离再调用它?不应该在tree.deselectAll()中激活一个Selection事件吗?

2 个答案:

答案 0 :(得分:4)

您可以通过以下方式以编程方式发送选择事件:

Event event = new Event();
event.widget = tree;
event.display = tree.getDisplay();
event.type = SWT.Selection;
tree.notifyListeners(SWT.Selection, event);

答案 1 :(得分:1)

有相同的情况,发现 this链接提及,以编程方式setSelection可能永远不会因设计而发送此事件,所以总是在设置后以编程方式发送它(如果需要)