簡體   English   中英

根據JTree的選擇顯示/隱藏JPopupMenu中的JMenuItems

[英]Show/Hide JMenuItems in a JPopupMenu based on a JTree's selection

我有一個JTree,當我右鍵單擊JTree中的節點時,它將顯示JPopupMenu。 基於JTree中選定的節點,隱藏/顯示或啟用/禁用JPopupMenu中的某些JMenuItem的最佳方法是什么?

我想到的第一個解決方案是為“值更改”事件向JTree添加TreeSelectionListener。 在事件處理代碼中,我將使用TreeSelectionEvent的getNewLeadSelectionPath()方法獲取最新選擇的路徑,並使用生成的TreePath對象的getLastPathComponent()獲取選定的節點。 從這里開始,我將擁有一系列IF語句,這些語句可以訪問JPopupMenu對象並執行必要的修改以隱藏/顯示特定的JMenuItems。

但是,對此感到有些不安,所以我決定問SO是否有更好的方法。

獲取選定的樹節點很簡單,應該可以按照您描述的那樣工作。 要修改彈出菜單,我建議使用Action 這樣,您不必修改實時菜單,還可以添加一個JToolBar ,它包含與菜單項的反應方式相同的相同動作。

我選擇在自己的應用程序中解決此問題的方法是使用DefaultMutableTreeNode類的“ userObject”屬性,該屬性允許您僅將所需的任何數據與節點一起存儲。 我有多種類型的東西,它們從定義“ createPopupMenu()”方法的抽象基類擴展而來。 然后,在選擇偵聽器中(正如您在問題中所描述的那樣),我獲得了用戶對象,並要求它創建一個適用於所選對象的彈出菜單並顯示該菜單。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM