javaFX资源加载

用法示例

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

位置分辨率选项

  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 /主/资源/ 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() 而不是使用流加载 load(stream)

    • 在加载器上设置基于URL的位置允许解析 fxml和css文件中加载的相对资源。相对的 资源无法解析基于流的构造函数。
  3. 要根据类派生位置,请使用 getClass().getResource(),因为它是基于URL的,而不是getClass().getResourceAsStream() 这是基于流的。

你可能感兴趣的:(javaFX)