当前位置: 首页 > 知识库问答 >
问题:

如何引用资源文件夹中的javafx fxml文件?

潘琪
2023-03-14

我正在创建一个javafx GUI应用程序,我的项目是一个maven配置的项目。我希望能够在我的控制器中引用我的fxml文件,如下所示:

FXMLLoader.load(getClass().getResource("main.fxml"); 

其中,我的main.fxml文件位于src/main/resources文件夹中,而我的控制器位于src/main/java文件夹中。我该怎么做呢?我的src/main/resources文件夹在构建路径中,并且我能够从src/main/java文件夹中的类调用src/main/resources文件夹中的.properties文件。

编辑

共有1个答案

戚祺
2023-03-14

用法示例

FXMLLoader loader = new FXMLLoader();
loader.setLocation(getClass().getResource("/main.fxml"));
Parent content = loader.load(); 

位置解析选项

>

  • 将所有fxml放入src/main/resources目录中。

    loader.setLocation(getClass().getResource("/main.fxml"));
    

    将所有fxml放入src/main/resources/fxml目录中。

    loader.setLocation(getClass().getResource("/fxml/main.fxml"));
    

    将fxml放置在相应的资源目录中;例如src/main/resources/com/mycompany/myapp。

    loader.setLocation(getClass().getResource("main.fxml")); 
    

    最后一个选项假设从中加载fxml的类位于相应Java源层次结构中的相同相对位置。例如,您可以从源代码com/mycompany/myapp/main.java调用最后一个load命令。

    FXMLLoader使用建议

    >

  • 通过new FXMLLoader()实例化FXMLLoader,而不是使用FXMLLoader上的静态方法。

    • 当您想要从加载程序中获取值(如实例化的控制器)时,静态方法会变得令人困惑。

    在实例化的FXMLLoader上设置位置,并调用load(),而不是使用load(stream)从流加载。

    • 在加载器上设置基于URL的位置允许解析加载在fxml和css文件中的相关资源。不解析基于流的构造函数的相对资源。

    若要基于类派生位置,请使用getClass().getResource(),因为它是基于URL的,而不是基于流的getClass().getResourceStream()

    IDE和生成设置

    确保您的IDE或生成工具正在将fxml文件从资源目录复制到生成输出目录。要了解Intellij对此的设置,请参见:如何将Intellij中的普通java项目转换为JavaFx项目。

  •  类似资料:
    • 如何从资源文件夹的子文件夹中读取文件。 我在资源文件夹中有一些json文件,例如: 现在我想在我的课堂上读到这个 这是我正在尝试的,但是失败了。 不起作用,那么我正在尝试: 这两样东西都不工作。

    • 我有一个资源文件夹/包在我的项目的根,我"不"想要加载某个文件。如果我想加载某个文件,我会使用class.getResourceAsStream,我会没事的!!我实际上想做的是在资源文件夹中加载一个“文件夹”,循环该文件夹中的文件,并获得每个文件的流,并在内容中读取...假设在运行时之前没有确定文件名...那我该怎么办?有没有一种方法来获得一个文件夹中的文件列表在您的jar文件?请注意,带有资源的

    • 资源(Asset)代表 source 文件夹中除了文章以外的所有文件,例如图片、CSS、JS 文件等。比方说,如果你的Hexo项目中只有少量图片,那最简单的方法就是将它们放在 source/images 文件夹中。然后通过类似于 ![](/images/image.jpg) 的方法访问它们。 对于那些想要更有规律地提供图片和其他资源以及想要将他们的资源分布在各个文章上的人来说,Hexo也提供了更组

    • 如何使用URI从资源文件夹的子文件夹中读取文件 资源文件夹中有一些json文件,如: 现在我想在我的课堂上读这个 这是我正在尝试的。 我的东西工作正常,但我遇到的问题是我不想使用< code>toURI,因为它会失败。

    • 问题内容: 我的项目具有以下结构: 我有一个文件,我想从单元测试中加载文件 我有此代码不起作用。它抱怨“没有这样的文件或目录”。 我也试过了 这也不起作用。它返回。我正在使用Maven构建我的项目。 问题答案: 尝试下一个: 如果上述方法不起作用,则已在以下类中添加了各种项目:1(代码在此处)。 以下是有关如何使用该类的一些示例:

    • 问题内容: 我知道如何使用读取带有的目录,但是对于我的特殊用例,我需要一个。我需要一个专门的原因是因为我需要通过调用从它获取对象。 这是我到目前为止的代码,它从中读取数据(在我的情况下为原语列表): 我曾尝试通过创建一个,但这只会导致: 有没有一种方法,我可以得到一个在目录中? 问题答案: 您可以像这样获取资产中的资源: 在您提供的 应该是资产的相对路径,同样你会提供给。 或者,您也可以这样创建: