【问题标题】:FXML filechooser failing to be reopenedFXML 文件选择器无法重新打开
【发布时间】:2019-09-21 07:57:48
【问题描述】:

我使用 FXML 在 Java 中按下按钮时运行以下代码

void run(){
            FileChooser fc = new FileChooser();
            FileChooser.ExtensionFilter extFilter = new FileChooser.ExtensionFilter("MP4 files (*.mp4)", "*.mp4");
            fc.getExtensionFilters().add(extFilter);
            fc.setInitialDirectory(videoFile);
            videoFile = fc.showOpenDialog(stage);

}

我第一次调用此代码时,它按预期工作,在 Windows 中打开文件选择对话框并返回文件句柄,但是如果我尝试使用相同代码打开一个新文件,则不会发生任何事情并引发此错误。

原因:java.lang.IllegalArgumentException:文件夹参数必须是有效文件夹

这似乎表明它立即无法打开对话框。有谁知道这背后的原因和可能的解决方法?

编辑:

我不正确地为将来可能需要答案的任何人调用 setInitialDirectory。

【问题讨论】:

  • videoFile 是文件而不是目录/文件夹吗?
  • videoFile 的变量名表示它保存的是文件,而不是文件夹。错误消息显示“文件夹参数必须是有效文件夹”。这两件事结合起来表明将videoFile 设置为initialDirectory 是不正确的。也许你的意思是fc.setInitialDirectory(videoFile.getParentFile())?
  • 感谢您的指导,我似乎刚刚处于自动驾驶状态并完全错过了这一点,感谢你们两位指出这一点。

标签: java javafx fxml


【解决方案1】:

原因:java.lang.IllegalArgumentException:文件夹参数必须是有效文件夹

传递给setInitialDirectory 的值必须是目录。 videoFile 似乎是一个文件而不是目录/文件夹。

【讨论】:

    猜你喜欢
    • 2017-03-15
    • 2017-07-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-25
    • 2020-09-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多