JTree 节点编辑路径比较始终为真

JTree node editing path comparison always true

我已经在文件服务器程序上工作了一段时间,到目前为止,我已经能够避免在这里发布一些东西来寻求帮助。但是我找不到任何关于我的问题的东西,我很困惑。

我添加了一个弹出菜单,其中包含创建新顶级文件夹的选项,它实际上只是创建一个节点,并在其编辑后将其名称发送到服务器以创建文件夹。虽然我的所有编辑工作正常并且上传工作正常,但我遇到了问题。

我在创建文件夹时将 JTree 更改为可编辑,并且 while 循环一直持续到该节点不是正在编辑的节点,此时它从 JTree 中删除了编辑能力。

public static void newTopFolder(){
    DefaultTreeModel model = (DefaultTreeModel) tree.getModel();
    DefaultMutableTreeNode root = (DefaultMutableTreeNode) model.getRoot(); //now we have the root
    DefaultMutableTreeNode newFolder = new DefaultMutableTreeNode("New Folder");//will change to increment for duplicates
    DefaultMutableTreeNode empty = new DefaultMutableTreeNode("< empty >");  //easier way to have empty folder, don't worry about it
    tree.setEditable(true); //sets to editable
    model.insertNodeInto(newFolder, root, root.getChildCount()); //adds folder to tree
    model.insertNodeInto(empty, newFolder, newFolder.getChildCount()); //adds empty to tree, not real file
    TreePath nfPath = getPath(newFolder); //so we don't call getPath extra times
    tree.startEditingAtPath(nfPath); //automatically selects folder to edit
    System.out.println(tree.getEditingPath().toString()+":"+nfPath.toString()+";"); //returns [\user\, New Folder]:[\user\, New Folder]; which shows the two are equal
    while(tree.getEditingPath().equals(nfPath)){//when nothing is selected null if nothing is being edited, and path to other objects if selected

    }
    tree.setEditable(false); //changes to node will have been committed and editing disable 
    sendFolderToServer(nfPath); //sends folder to server after formatting as a String used in new File(Paths.get(nfPath));
}

不幸的是,while 检查 tree.getEditingPath().equals(nfPath) 总是 returns true,因此它仍然是可编辑的。

但我不明白为什么它仍然是真的,它显然不应该。如果它有助于/改变任何东西,这是 运行 在一个单独的线程中(否则 while 循环会停止 GUI 呈现)

那么我应该/可以做什么,有没有更好的方法,或者至少有一个可行的方法?

更新:

虽然我还没有找到解决上述明显问题的方法,但如果我改为测试 tree.isPathSelected(nfPath) 效果很好,之后树将设置为不可编辑!

获取编辑路径不会删除正在编辑的路径的变量...因此,在完成编辑后,最近编辑的路径仍然是正确的路径。

改为使用 tree.isPathSelected(path) 会起作用