Я делаю браузер файлов с помощью 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 - это папка, которую я хочу переименовать. Все работает, кроме визуализации переименованной папки. Буду признателен, если кто-то может мне помочь.