我有一个三级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);
答案 0 :(得分:0)
我在执行操作时添加了以下代码,并且在选择菜单项时通过双击允许编辑来帮助停止编辑节点。
TreePath selectionPath = tree.getSelectionPath();
tree.startEditingAtPath(selectionPath);
答案 1 :(得分:0)
查看TreeCellEditor#isCelLEditable
,这是JTree
用于确定某个单元格是否应该开始编辑的内容