如何在资源文件夹中引用JavaFX的FXML文件?

12 浏览
0 Comments

如何在资源文件夹中引用JavaFX的FXML文件?

我正在创建一个使用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文件。

编辑

我尝试将fxml文件放在主资源文件夹的相应目录中:

enter image description here

但是仍然出现了错误。

0
0 Comments

问题的原因:在资源文件夹中创建了一个名为"dominion.application"的文件夹,而不是在一个名为"dominion"的文件夹内创建一个名为"application"的文件夹。由于这个原因,"MainController"类被放置在与fxml文件不同的包中。

解决方法:

1. 打开操作系统中的资源文件夹。

2. 在资源文件夹中创建一个名为"dominion"的文件夹。

3. 在"dominion"文件夹中创建一个名为"application"的文件夹。

4. 将"MainController"类移动到"dominion.application"包中。

5. 确保"MainController"类和fxml文件位于同一个包中。

这样做将解决"如何在资源文件夹中引用JavaFX FXML文件"的问题。

0
0 Comments

问题的原因是在加载FXML文件时,使用了相对路径,但是FXML文件和加载它的Java类不在同一个目录下。解决方法是使用相对路径,并在加载FXML文件的路径前加上"/"字符。例如,可以使用以下代码解决问题:

FXMLLoader fxmlLoader = new FXMLLoader( getClass().getResource("/main.fxml") );

这个解决方法非常简单,一旦你仔细考虑一下,就会明白它的道理。路径是相对于调用FXMLLoader()方法的源文件的。

0
0 Comments

问题的出现原因:

该问题的出现是由于在JavaFX应用程序中引用FXML文件时出现了路径错误或资源文件无法找到的问题。

解决方法:

以下是解决该问题的几种方法:

1. 将所有的FXML文件放在src/main/resources目录下,并使用以下代码引用:

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

2. 将所有的FXML文件放在src/main/resources/fxml目录下,并使用以下代码引用:

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

3. 将FXML文件放在对应的资源目录中,例如src/main/resources/com/mycompany/myapp,并使用以下代码引用:

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

最后一种方法假设加载FXML的类与对应的Java源代码层次结构中的相对位置相同。例如,您可能会从源代码com/mycompany/myapp/Main.java中调用最后一个加载命令。

建议使用FXMLLoader的用法:

1. 实例化FXMLLoader时使用new FXMLLoader(),而不是使用FXMLLoader上的静态方法。

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

3. 要根据类获得位置,请使用getClass().getResource(),而不是getClass().getResourceAsStream()

IDE和构建设置:

确保您的IDE或构建工具将FXML文件从资源目录复制到构建输出目录。有关此设置的Intellij设置,请参见文章中提供的链接。

关于Java Jigsaw模块化应用程序的说明:

在Java Jigsaw模块化应用程序中,需要注意资源的获取方式。具体来说,应该从类直接获取资源,而不是从类加载器获取。如果从类加载器获取资源,那么根据模块配置,查找将受到额外限制。

对于NetBeans用户的快速提示:

如果您使用的是NetBeans,可以通过右键单击项目目录 > 属性 > 选择“源” > 选择要添加到源的文件夹 > 添加文件夹 来将现有文件夹添加到src目录。因此,如果您已经有一个包含您要引用的FXML文件的文件夹,您可以直接将该文件夹添加并使用相对路径调用FXML文件。

以上是关于如何在JavaFX应用程序中引用FXML文件的解决方法和一些建议。希望能对您有所帮助!

0