Java 双击树查看器上的侦听器

Java 双击树查看器上的侦听器,java,swt,Java,Swt,我在树查看器上有一个选择更改的侦听器,如果我根据所选项目单击树中的项目,组合查看器的选择将相应更改 现在,我需要在同一棵树上实现双击功能,以便该树展开和收拢,从而隐藏选择更改侦听器的功能。现在,优先级在selection changed listener上,因此即使我将双击listener添加到同一个树中,也会触发selection change事件。有没有办法让选择更改侦听器(用于选择更改事件)和双击侦听器(用于展开/折叠树项目)位于同一棵树上 IDoubleClickListener的代码

我在树查看器上有一个选择更改的侦听器,如果我根据所选项目单击树中的项目,组合查看器的选择将相应更改

现在,我需要在同一棵树上实现双击功能,以便该树展开和收拢,从而隐藏选择更改侦听器的功能。现在,优先级在selection changed listener上,因此即使我将双击listener添加到同一个树中,也会触发selection change事件。有没有办法让选择更改侦听器(用于选择更改事件)和双击侦听器(用于展开/折叠树项目)位于同一棵树上

IDoubleClickListener的代码

public class TreeViewerDblClkListener implements IDoubleClickListener {

@Override
public void doubleClick(DoubleClickEvent event) {
    Object obj = event.getSource();
    if (obj instanceof TreeViewer) {
        TreeViewer viewer = (TreeViewer) obj;
        ISelection selection = viewer.getSelection();
        if (selection instanceof IStructuredSelection) {
            Object item = ((IStructuredSelection) selection).getFirstElement();
            if (viewer.getExpandedState(item)) {
                viewer.collapseToLevel(item, AbstractTreeViewer.ALL_LEVELS);
            } else {
                viewer.expandToLevel(item, 1);
            }
        }
    }
}
}
它确实抛出了一个断言失败的异常

org.eclipse.core.runtime.AssertionFailedException: null argument:
at org.eclipse.core.runtime.Assert.isNotNull(Assert.java:85)
at org.eclipse.core.runtime.Assert.isNotNull(Assert.java:73)
at org.eclipse.jface.viewers.AbstractTreeViewer.getExpandedState(AbstractTreeViewer.java:1202)
at com.commons.viewers.TreeViewerDblClkListener.doubleClick(TreeViewerDoubleClickListener.java:20)
at org.eclipse.jface.viewers.StructuredViewer$1.run(StructuredViewer.java:845)
at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42)

有人知道这里发生了什么吗?

没有,我认为选择更改事件将始终触发。在选择侦听器中,双击时不应执行的操作是什么?在选择更改侦听器中,我只是将所选树项设置为组合框,并显示一些重要的变量详细信息。因此,如果选择更改事件总是触发,我觉得这相对没问题,但当我向同一棵树添加双击侦听器时,树项不会展开/折叠。这个问题有解决办法吗?我可以在同一棵树上同时选择更改侦听器和双击侦听器吗?您可以同时选择更改侦听器和双击侦听器,应该没有问题。显示
IDoubleClickListener
的代码。因此,当我执行treeviewer.addDoubleClickListener(新的treeviewer.addDoubleClickListener)并运行代码并双击树项目时,它会抛出断言失败Exception@user3354299它在哪里抛出这个异常?