java - 如何加载 *.jar 文件之外的 FXML 文件

标签 java javafx fxml

这是我在 Stack 上的第一篇文章,我一直在寻找问题的答案,但没有找到任何有用的东西。 我正在学习 Java,所以要温柔一点;)

我的问题是,我不想用“jar”中的所有内容制作一个文件。我必须加载 FXML 文件,该文件不在 *.jar 文件中。 例如: 我正在制作位于 JavaFXMLApplication 文件夹中的 FXML 文件,我运行“JavaFXApplication.jar”文件,并且该应用程序使用我刚刚制作的 FXML。

我希望我能描述清楚:)

编辑: 我找到了另一种解决方案,它对我来说效果更好......

    File file = new File("absolutPathToFile\\FXMLDocument.fxml");
    InputStream is = new BufferedInputStream(new FileInputStream(file));

    Pane root = new Pane();

    FXMLLoader loader = new FXMLLoader();
    try
    {
        root = loader.load(is);

    }
    catch (IOException ex)
    {
        System.out.println(ex);
    }

希望对大家有帮助

干杯:)

最佳答案

您可以从任何地方加载 FXML 文件。一种可能性是使用将 URL 作为参数的 load 命令。您可以像这样轻松获取该 URL:

    try {
        File file = new File("../../FXMLDocument.fxml");
        if (file.canRead()) {
            URL url = file.toURI().toURL();
            Pane root = FXMLLoader.load(url);
        } else {
            System.err.println("File does not exist.");
        }
    } catch (IOException e) {
        e.printStackTrace();
    }

关于java - 如何加载 *.jar 文件之外的 FXML 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36348880/

相关文章:

java - 在Netbeans模块中覆盖jar中的类

从命令行运行应用程序时 JavaFX 8 视频播放卡住

java - Java FX 中的 "mnemonicParsing"属性是什么

java - 二维码扫描仪无法在 android 6.0.1 中运行(显示白屏)

java - 未找到 W/DynamiteModule : Local module descriptor class for com. google.android.gms.googlecertificates

Java 的属性 : differences between . propertyNames() 和 .stringPropertyNames()?

java - ComboBox onAction 方法导致由 ClassCastException 引起的 InitationTargetException

java - 为什么这个 CSS 属性在 JavaFX CSS 引用指南中没有详细说明?

java - 如何在文件加载时保持 Java FXML Activity

javafx-2 - 将对象从一个场景传递到另一个场景