如何停止鼠标点击事件编辑 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用来确定单元格是否应该开始编辑的内容

最新更新