我需要在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