我正在使用JavaFX编写脚本,其中一部分涉及用户选择现有项目或创建新项目。在后一种情况下,我有一个弹出窗口,提示用户输入名称和保存项目的位置。我希望做的是在用户使用与项目相同的名称指定的位置创建一个文件夹,从这里我将保存不同的项目并在以后加载它们。但是,当我使用filechooser让用户选择文件夹的位置时,它需要他们在选择器实际选择任何内容之前选择一个项目。然后它创建的文件夹在开头有这个项目的名称。 (例如,如果我在桌面上选择Chrome快捷方式,则文件夹名称将为chrome.exeProject1或类似内容)
我知道问题的一部分是因为我重复使用了部分我的filechooser代码用于不同的功能,我要求用户在提交之前选择一个项目,无论如何......
用户有没有办法选择文件夹,或者只提交filechooser而不选择任何项目并在此处创建新文件夹? (在所选文件夹内或后一种情况下的当前文件夹中)。
下面的相关代码,任何帮助表示赞赏。谢谢!
@FXML
private void submitName(ActionEvent event) {
name = nameOfProject.getText();
if (name != null && location != null)
{
new File(location + name).mkdir();
}
}
@FXML
private void createProjectDirectory(ActionEvent event) {
FileChooser projectDirectory = new FileChooser();
projectDirectory.setTitle("Create Project Directory:");
File refLocation = projectDirectory.showOpenDialog(null);
if (refLocation != null) {
locationOfProject.clear();
location = refLocation.getPath();
locationOfProject.appendText(location);
}
}
答案 0 :(得分:0)
您必须使用DirectoryChooser
代替FileChooser
才能让用户选择目录。
您可以阅读有关如何使用这些类here的文档(它来自JavaFX 2,但我想界面大致相同)。