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