情况 1:FXML 文件与调用类在同一个包中(推荐)
假设类 MainApp
的包是 com.example
,且 FXML 文件放在 resources/com/example
下:
项目根目录
├── src
│ └── sample
│ └── Main.java
├── src/sample/resources
│ └── sample
│ └── my_view.fxml
使用 getClass().getResource() 的正确方式
URL fxmlUrl = getClass().getResource("my_view.fxml");
FXMLLoader loader = new FXMLLoader(fxmlUrl);
情况 2:FXML 文件在与调用类在同一个包中,且资源目录的子文件夹中
例如,FXML 文件位于 resources/com/example/view
:
项目根目录
项目根目录
├── src
│ └── sample
│ └── Main.java
├── src/sample/resources
│ └── sample1
│ └── my_view.fxml
使用 getClass().getResource() 的正确方式
// 使用绝对路径(以 / 开头表示从 classpath 根目录开始)
URL fxmlUrl = getClass().getResource("/sample/resources/sample1/samplexiala1.fxml");
FXMLLoader loader = new FXMLLoader(fxmlUrl);