簡體   English   中英

如何停止鼠標單擊事件編輯Jtree的選定節點

[英]How to stop the mouse click event editing the selected node of a Jtree

我有一個三層的JTree。 可以在菜單中選擇一個選項來重命名第二級節點。 即使我在菜單中單擊重命名選項,仍然需要雙擊節點進行編輯。 我想停止鼠標單擊事件來編輯它,讓用戶只通過選擇菜單項來編輯節點。 由於我是Swing的新手,我可能在代碼中遺漏了一些東西。 請幫忙繼續。 以下是我的代碼。

    JMenuItem itemRename = new JMenuItem("Rename");

itemRename.addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent ae) {
        DefaultMutableTreeNode selectedNode = (DefaultMutableTreeNode) 
        tree.getLastSelectedPathComponent();
        Object testCaseNodeInfo=selectedNode.getUserObject();
        String oldName=(String)testCaseNodeInfo;
        tree.setEditable(true);

        DefaultTreeCellEditor editor=new DefaultTreeCellEditor(tree,
                (DefaultTreeCellRenderer)tree.getCellRenderer()){
            @Override
            public boolean isCellEditable(EventObject event) {
                if(event instanceof MouseEvent){
                    return false;
                }
                return super.isCellEditable(event);
            }
        };
        tree.setCellEditor(editor);

/*this allows to save the changed item in a global object on pressing 
Enter key after the change */                   
tree.getModel().addTreeModelListener(new TCTreeModeListener(oldName));

    }
});

add(itemRename);

在執行操作時,我添加了以下代碼,通過選擇菜單項時雙擊允許編輯,它有助於停止編輯節點。

 TreePath selectionPath = tree.getSelectionPath();
 tree.startEditingAtPath(selectionPath);

看看TreeCellEditor#isCelLEditable ,這是JTree用來確定單元是否應該開始編輯的內容

暫無
暫無

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

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