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是我想要重命名的文件夾。除了重命名文件夾的可視化之外,一切都可以使用我會很感激,如果有人能幫助我。