`我正在为大学开发一个项目,我需要使用 ADT 树创建个人文件系统。
目前我可以打开该文件夹,并且该文件夹的所有元素都添加到树中并显示在 Java FX 的 TreeView 中。我可以重命名文件、编辑文件并显示文件内容。但是,当我尝试创建新文件或新文件夹时,在上下文菜单中按该选项,什么也没有发生。
我尝试在 createFile 中添加 renameFile 的逻辑,但仍然没有任何反应,反之亦然。
这是我班级的代码。
``
/** * 意大利面的方法 */ 公共无效创建文件夹(){
createFolder.setOnAction(event -> {
File dir = getValue();
if (!dir.isDirectory()) {
return;
}
String dirName = dialogHandler.showTextInputDialog("Nova Pasta", "A criar nova pasta", "Por favor insira o nome da pasta:", "pasta");
if (dirName == null) {
return;
}
File file = new File(dir, dirName);
if (file.exists()) {
dialogHandler.showAlert(AlertType.WARNING, "Aviso", "A pasta: " + file.getName() + " já existe",
"Não foi possível criar a pasta pois já existe uma com o mesmo nome");
} else {
boolean success = file.mkdir();
if (!success) {
dialogHandler.showAlert(AlertType.ERROR, "Erro",
"Erro a criar diretório: " + file.getName(),
"Não foi possível criar o diretório especificado");
} else {
// Adicionar à TreeLinked
Position<File> parentPosition = treeLinked.isInternal(treeLinked.root()) ? treeLinked.root() : null;
Position<File> insertedPosition = treeLinked.insert(parentPosition, file);
// Adicionar à TreeView existente
TreeItem<File> newTreeViewItem = new TreeItem<>(file);
treeView.getRoot().getChildren().add(newTreeViewItem);
// Expande o nó pai na TreeView para mostrar a nova pasta
treeView.getRoot().setExpanded(true);
}
}
});
}
``
解决方案:
// Somewhere in your controller:
private Class? createFolder;
// Somewhere in your initConstructorOrWhatever method:
public initConstructorOrWhatever(){
initCreateFolder();
}
public void initCreateFolder() {
createFolder.setOnAction(event -> {
File dir = getValue();
if (!dir.isDirectory()) {
return;
}
// ... Code
});
}