[英]How can I be sure that my javaFX application is loading images from a relative path?
[英]how to show images with a relative path on a JavaFX application?
我正在创建一个需要显示图像的 JavaFX 应用程序,我目前的做法是这样的:
ImageView icon=new ImageView(new Image("file:///C:/Users/MMJon/eclipse-workspace/Pumaguia/src/vista/resources/rutas.png"));
我试图做到像这样
ImageView icon=new ImageView(new Image(this.getClass().getResource("resources/rutas.png").toExternalForm()));
但它抛出一个空指针异常。 我怎样才能做我需要的?
这是控制台的图像,这是我的项目结构的图像我的主类是“pumaguia”,显示图像的类在“pestanas”包中,包含图像的文件夹是“resources”。
更新:我尝试在 ubuntu 的命令行上编译,这就是我得到的。 希望能帮助到你。
假设您使用的是 JDK 8 及更高版本。 路径必须是相对的,并以适当的平台路径分隔符开头。
定义 ImageProvider 以确保您正确处理缺少图像的情况。 请注意,我使用类引用来建立资源路径。
public class ImageProvider {
private static ImageProvider imageSingleton;
private Image image = null;
private static final java.util.logging.Logger LOGGER = LogManager.getLogManager().getLogger("MyApp");
private ImageProvider(String imageStr) {
try {
image = new Image(ImageProvider.class.getResource(imageStr).toURI().toString());
} catch (URISyntaxException ex) {
LOGGER.log(Level.SEVERE, "Cannot fine image.", ex);
}
}
/**
* Returns an Image if possible.
* @param imageStr the relative path preceded by the appropriate platform path separator.
* @return
*/
public static Image getImage(String imageStr) {
return Optional.ofNullable(imageSingleton).orElseGet(() -> imageSingleton = new ImageProvider(imageStr)).image;
}
然后你可以使用;
ImageProvider.getImage("/img/myImage.png")
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.