[英]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是否有更好的方法。
我選擇在自己的應用程序中解決此問題的方法是使用DefaultMutableTreeNode類的“ userObject”屬性,該屬性允許您僅將所需的任何數據與節點一起存儲。 我有多種類型的東西,它們從定義“ createPopupMenu()”方法的抽象基類擴展而來。 然后,在選擇偵聽器中(正如您在問題中所描述的那樣),我獲得了用戶對象,並要求它創建一個適用於所選對象的彈出菜單並顯示該菜單。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.