繁体   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