我需要在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. 從SWT表中刪除項目
- 5. Java SWT:如何刪除SWT表中的選定行
- 6. swt表更改選擇項目顏色
- 7. Angular UI選擇刪除項目點擊
- 8. 如何從Java SWT中的樹中刪除TreeItem?
- 9. Java選擇項目
- 10. 刪除選擇時選擇的項目會從列表框中
- 11. 如何刪除通過listbx選擇項目的項目
- 12. 選擇選項後刪除ColdFusion選項
- 13. Java SWT DateTime - 獲取選擇?
- 14. 在樹狀C#WPF刪除選中的項目
- 15. YUI - 刪除選擇的選項
- 16. jQuery - 恢復刪除的選擇選項
- 17. 更改樹視圖中選擇項目
- 18. WPF,TreeView的bug,從樹狀視圖中刪除項目後無法選擇根項目
- 19. 刪除與Jquery選擇選項
- 20. 選擇選項刪除功能
- 21. 從IE6中選擇刪除選項
- 22. jQuery從選擇中刪除選項
- 23. jquery禁用/刪除選項上選擇?
- 24. 從選項中刪除值選擇
- 25. CKEditor從選擇中刪除選項
- 26. 原始的HTML的選擇:刪除選項將顯示選擇
- 27. 從其他選擇輸入中刪除所選項目
- 28. 樹選擇的Java問題
- 29. 異步擴展Java SWT樹
- 30. Java SWT:在寫入之前清除表中的所有項目
謝謝你的快速回復!但是我不能添加一個有用的偵聽器到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