JavaFX 从外部文件夹加载图像

JavaFX load image from external folder

我需要一些帮助来将图像导入我的 JavaFx 应用程序:

我的图片路径为:/sprinter/ExternalSprinterFolder/Maps/map_asteroid/map_asteroid.jpg

我的 GUI 代码有路径: /sprinter/src/de/sprinter/gameclient/gui/SelectSectorGui.java

我已经尝试了很多,但我无法加载图像... 我试过例如:

File file = new File(imagePath);
Image image = new Image(file.toURI().toString());
ImageView iv = new ImageView(image);

 String image = SelectSectorGui.class.getResource(imagePath).toExternalForm();
 pane.setStyle(("-fx-background-image: url(\" " + image +
                      " \");-fx-background-repeat: no-repeat;"));

如果文件将在文件系统上,而不是作为 jar 文件的一部分捆绑,则第一个代码块是执行此操作的正确方法。在那种情况下 imagePath 应该是文件的绝对文件系统路径。您可以检查文件是否存在

System.out.println(file.exists());

如果图像文件将捆绑在您的 jar 文件中,则第二个代码块是执行此操作的正确方法。在这种情况下,imagePath 应该是相对于 class;以 / 开头的路径被解释为相对于 class 路径。如果在这种情况下路径不正确,getResource(...) 将 return null.