0
我正在使用JTree制作文件浏览器。我需要重命名一个目录(文件夹)。到目前为止,我已经成功地重命名了目录,但我不能重命名该节点。这是我到目前为止:如何重命名JTree中的目录?
public TreePath findTreePath(File find) {
for (int ii = 0; ii < tree.getRowCount(); ii++) {
TreePath treePath = tree.getPathForRow(ii);
Object object = treePath.getLastPathComponent();
DefaultMutableTreeNode node = (DefaultMutableTreeNode) object;
File nodeFile = (File) node.getUserObject();
if (nodeFile == find) {
return treePath;
}
}
// not found!
return null;
}
private void renameFile() {
if (currentFile==null) {
showErrorMessage("No file selected to rename.","Select File");
return;
}
String renameTo = JOptionPane.showInputDialog(gui, "New Name");
if (renameTo!=null) {
try {
boolean directory = currentFile.isDirectory();
TreePath parentPath = findTreePath(currentFile.getParentFile());
DefaultMutableTreeNode parentNode =
(DefaultMutableTreeNode)parentPath.getLastPathComponent();
boolean renamed = currentFile.renameTo(new File(
currentFile.getParentFile(), renameTo));
if (renamed) {
if (directory) {
// rename the node..
// delete the current node..
TreePath currentPath = findTreePath(currentFile);
System.out.println(currentPath);
DefaultMutableTreeNode currentNode =
(DefaultMutableTreeNode)currentPath.getLastPathComponent();
treeModel.removeNodeFromParent(currentNode);
treeModel.reload();
// add a new node..
}
showChildren(parentNode);
} else {
String msg = "The file '" +
currentFile +
"' could not be renamed.";
showErrorMessage(msg,"Rename Failed");
}
} catch(Throwable t) {
showThrowable(t);
}
}
gui.repaint();
}
currentFile是我想要重命名的文件夹。除了重命名文件夹的可视化之外,一切都可以使用我会很感激,如果有人能帮助我。