用法示例
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 /主/资源/ COM / myCompany中/ MYAPP。
loader.setLocation(getClass().getResource("main.fxml"));
最后一个选项假定您从中加载fxml的类位于相应Java源层次结构中的相同相对位置。例如,您可以从源调用上一个加载命令 com.mycompany.myapp.Main.java
。
FXMLLoader使用建议
-
通过实例化FXMLLoader
new FXMLLoader()
而不是使用 该 FXMLLoader上的静态方法。- 静态方法 你想要变得混乱 得到价值 (就像实例化一样 控制器)来自装载机。
-
设置位置 在实例化的FXMLLoader和调用上
load()
而不是使用流加载load(stream)
。- 在加载器上设置基于URL的位置允许解析 fxml和css文件中加载的相对资源。相对的 资源无法解析基于流的构造函数。
-
要根据类派生位置,请使用
getClass().getResource()
,因为它是基于URL的,而不是getClass().getResourceAsStream()
这是基于流的。