我需要在Java SWT中为树创建一个弹出菜单.但是,只有在没有选择任何项目时(当我单击TreeViewer的空白区域时),才会弹出菜单.如果我现在选择树的一个项目,我不能再次取消选择它.TreeViewer位于Composite内部.
我的第一个想法是添加一个MouseListener来检查是否没有选择Items并调用deselectAll()
,但event.getSource()
只返回树.
在(右)单击空格时如何删除项目选择的任何想法?
通常,您可以通过单击该项来取消选择.
另一种选择是为鼠标点击注册一个监听器,并使用事件位置来定位树项.如果返回null,则可以调用deselectAll()
.
但是,你怎么能得到TreeViewer
从Tree
?简单:将引用存储data
在树的属性中.然后,您可以在事件处理程序中使用此代码:
TreeViewer view = (TreeViewer) event.getSource().getData();
Run Code Online (Sandbox Code Playgroud)