JavaFX。 FXML加载程序无法在带有模块的项目中找到.fxml文件

时间:2019-03-18 15:57:55

标签: java javafx fxml fxmlloader

我有一个结构如下的项目:

enter image description here

我试图使用以下代码从Main类加载sample.fxml:

Parent root = FXMLLoader.load(Main.class.getResource("../../submodule/src/java/sample.fxml"));

但是它不起作用。 sample.fxml文件代码为:

<?import javafx.geometry.Insets?>
<?import javafx.scene.layout.GridPane?>
<?import javafx.scene.control.Button?>
<?import javafx.scene.control.Label?>


<GridPane fx:controller="sample.Controller"
      xmlns:fx="http://javafx.com/fxml" alignment="center" hgap="10"    vgap="10">
</GridPane>

问题是FXML加载器找不到此位置。如何解决?

1 个答案:

答案 0 :(得分:0)

我建议遵循基本的Maven包结构,如下所示:

src
 |--main
      |--java
      |--resource (put your FXML file into this folder)

然后以下应该起作用:

Parent root = FXMLLoader.load(getClass().getClassLoader().getResource("sample.fxml"));

您也可以将FXML文件放入子文件夹:

... = FXMLLoader.load(getClass().getClassLoader().getResource("layouts/sample.fxml"));