Java DefaultTreeModel的removeNodeFromParent正在删除不正确的节点

问题描述

我有一个JTree,看起来像这样:

My JTree at runtime

我有一个弹出菜单,每当用户右键单击JTree上的节点时就会出现一个弹出菜单,该节点具有一个JMenuItem来删除该节点:

public class DeleteMenuItem extends JMenuItem {

    private static final long serialVersionUID = -7772347171442949034L;
    private String menuItemText = "Delete";

    public DeleteMenuItem(DefaultTreeModel treeModel,DefaultMutableTreeNode treeNode,FileNode fileNode) {
        super();

        this.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent event) {
                int userChoice = JOptionPane.showConfirmDialog(null,"Delete " + fileNode.getFile().getName() + "?","Delete File",JOptionPane.YES_NO_OPTION);

                if (userChoice == JOptionPane.YES_OPTION) {
                    boolean successfullyDeletedFile = fileNode.getFile().delete();
                    if (successfullyDeletedFile) {
                        JOptionPane.showMessageDialog(null,"Successfully deleted " + fileNode.getFile().getName(),"File Deleted",JOptionPane.informatION_MESSAGE);
                        treeModel.removeNodeFromParent(treeNode);  // treeNode is the node I right clicked on and pressed delete on it is the one I need gone
                    } else {
                        JOptionPane.showMessageDialog(null,"Could not delete " + fileNode.getFile().getName(),"File Deletion Failed",JOptionPane.ERROR_MESSAGE);
                    }
                } else {
                    return;
                }
            }
        });

        this.setText(this.menuItemText);
    }

}

但是,似乎当我右键单击该节点并按Delete键时:

Pressing right click and then delete

Tree after deletion

我不明白为什么会这样,因为当我在文件浏览器中查看时,我在树中右键单击的正确文件删除,但树显示了该文件,并且似乎已删除了父节点。

>

我知道treeNode是正确的节点,因为它没有子节点(我已经对其进行了测试),因此不可能是treeNode不是正确的节点。

如何在JTree中删除正确的节点?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...