问题描述
我有一个弹出菜单,每当用户右键单击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
我不明白为什么会这样,因为当我在文件浏览器中查看时,我在树中右键单击的正确文件已删除,但树显示了该文件,并且似乎已删除了父节点。
>我知道treeNode
是正确的节点,因为它没有子节点(我已经对其进行了测试),因此不可能是treeNode
不是正确的节点。
如何在JTree中删除正确的节点?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)