【问题标题】:JavaFX FileChooserJavaFX 文件选择器
【发布时间】:2012-03-11 16:01:32
【问题描述】:

我现在在使用 JavaFX 时遇到了一个小问题。我试图在我的代码中创建一个文件选择,在那里我可以指向一个文件夹而不是一个文件。目前我没有解决方案。你知道一种解决方法(除了使用 swing 中的 JFileChooser)吗?

非常感谢您提前回答

编辑:我现在已经得到了答案,正在尝试对其进行测试,但我忘了提及 JavaFX 的版本。这是几天前发布的最新 2.0.3 稳定版(但最初的非 beta 2.0 和 2.0.1 也有这个问题)

【问题讨论】:

    标签: directory javafx filechooser


    【解决方案1】:

    DirectoryChooser 作为the 2.1 release 的一部分添加到JavaFX。 用法是:

    DirectoryChooser chooser = new DirectoryChooser();
    chooser.setTitle("JavaFX Projects");
    File defaultDirectory = new File("c:/dev/javafx");
    chooser.setInitialDirectory(defaultDirectory);
    File selectedDirectory = chooser.showDialog(primaryStage);
    

    issue tracker 提到了 2.0GA 版本的解决方法:“访问私有 Oracle API Glass 方法 CommonDialogs.showFolderChooser”。

    【讨论】:

    • “您不能以访客身份查看此 URL。您必须登录或注册一个帐户。”
    • 点击JavaFX Jira tracker中的注册链接注册一个账户——这是一个开放的系统,任何人都可以注册一个账户。
    • 政策在几个月前发生了变化,JavaFX Jira 跟踪器不再是一个开放系统。未来的错误报告可能会提交至:bugreport.java.com,其中的某些版本最终可能会出现在bugs.openjdk.java.net中以供查看
    【解决方案2】:

    与swing中JFileChooser用于选择文件夹和单个文件不同,在javafx中,有FileChooser类用于选择单个文件和DirectoryChooser类用于选择目录

    DirectoryChooser directoryChooser = new DirectoryChooser();
    directoryChooser.setTitle("Open Resource File");
    directoryChooser.getExtensionFilters().addAll(
        new ExtensionFilter("Text Files", "*.txt"),
        new ExtensionFilter("Image Files", "*.png", "*.jpg", "*.gif"),
        new ExtensionFilter("Audio Files", "*.wav", "*.mp3", "*.aac"),
        new ExtensionFilter("All Files", "*.*"));
    File selectedFile = directoryChooser.showDialog(mainStage);
    if (selectedFile != null) {
        mainStage.display(selectedFile);
    }
    

    是目录选择器的示例。

    FileChooser fileChooser = new FileChooser();
    fileChooser.setTitle("Open Folder");
    fileChooser.showDialog(stage);
    

    是文件选择器的一个例子

    【讨论】:

    • 这里有一点有趣的地方:也许你可以改进你的答案(否则你会迷惑别人)。在您的示例中,据称是DirectoryChooser,您没有使用javafx.stage.DirectoryChooser。此外,它没有方法showOpenDialog
    • 其实我没有发现 DirectoryChooser...所以谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-20
    • 1970-01-01
    • 2011-09-04
    • 2018-01-07
    相关资源
    最近更新 更多