我需要在Java SWT中为树创建一个弹出菜单。但是菜单应该只在没有选择项目时弹出(当我点击TreeViewer的空白区域时)。如果我现在选择树的一个项目,我不能再取消它的选择。 TreeViewer在Composite中。
我的第一个想法是添加一个MouseListener来检查是否没有选择这些项目,并调用deselectAll()
,但event.getSource()
只返回树。
任何想法如何删除一个项目选择时,空格被点击(右键)?Java SWT:删除树项目的选择
1
A
回答
5
通常情况下,您可以通过Ctlr单击该项目取消选择。
另一种选择是注册鼠标单击的侦听器,并使用事件位置来定位树项目。如果返回null,则可以拨打deselectAll()
。
但是,如何从Tree
获得TreeViewer
?简单:将引用存储在树的data
属性中。然后你就可以在你的事件处理程序使用此代码:
TreeViewer view = (TreeViewer) event.getSource().getData();
2
event.getSource()的getLocation()只是告诉你父的树部件的当前位置的坐标系,这就是为什么它总是相同的。您需要从MouseEvent获取点击坐标。它有x和y,这应该是点击坐标。
综上所述:
Tree tree = (Tree) event.getSource();
if (tree.getItem(new Point(event.x, event.y)) != null)
// an item was clicked.
else
// no item was clicked.
相关问题
- 1. 删除选择后SWT选择事件
- 2. 选择树项目
- 3. SWT树项目高度
- 4. 的jQuery选择删除项目
- 5. 从SWT表中删除项目
- 6. 如何删除swt中列表中的选定项目
- 7. Java SWT:如何删除SWT表中的选定行
- 8. swt表更改选择项目颜色
- 9. Angular UI选择删除项目点击
- 10. Java选择项目
- 11. 如何从Java SWT中的树中删除TreeItem?
- 12. 删除选择时选择的项目会从列表框中
- 13. 如何删除通过listbx选择项目的项目
- 14. 选择选项后删除ColdFusion选项
- 15. 删除Qt中的一棵树项目
- 16. jQuery删除设置选择选项选择不删除
- 17. 删除选中的项目
- 18. Java SWT DateTime - 获取选择?
- 19. 删除SWT TableEditor
- 20. WPF树视图中选择的项目
- 21. 选择树中的多个项目
- 22. 删除选择列表项
- 23. Java RB树删除
- 24. java xml删除项目
- 25. 在树状C#WPF删除选中的项目
- 26. 如何从树中删除项目
- 27. 删除树项目仍在运行QStyledItemDelegate
- 28. 当选择其他项目时,从选择框中添加和删除选项
- 29. 如何删除空的选择选项?
- 30. 的jQuery选择删除选项
谢谢你的快速回复!但是我不能添加一个有用的侦听器到TreeViewer来检查哪个项目被点击。你的想法是什么? – 2011-03-08 10:40:45
您需要将侦听器添加到'Tree'。一个'TreeViewer'只是一个辅助类,它使得在树中显示树模型变得更加简单;大部分工作仍在底层树部件上完成。 – 2011-03-08 11:04:37
也许我不清楚。 MouseListener已经在树上。我需要找出是否点击了一个项目或空白区域(右键点击首选)。如果我尝试使用'((Tree)event.getSource())。getLocation()'获取位置,则无论点击哪处,它都会返回相同的Point。 – 2011-03-08 12:04:40