ImageView 找不到图像 URL

ImageView can't find image URL

我在 GridPane 中显示图像时遇到问题。我收到输入流不能为空的错误。异常在 ImageView 创建对象的第一行。如您所见,图片在文件夹中。有什么问题。

    ImageView windows = new ImageView(new Image(Main.class.getResourceAsStream("res/windows.png")));
    ImageView linux = new ImageView(new Image(Main.class.getResourceAsStream("res/windows.png")));
    ImageView mac = new ImageView(new Image(Main.class.getResourceAsStream("res/windows.png")));
    ImageView android= new ImageView(new Image(Main.class.getResourceAsStream("res/windows.png"))); 

    GridPane gpanel = new GridPane();
    gpanel.setPadding(new Insets(5));       
    gpanel.add(windows, 0, 0);
    gpanel.add(linux, 1, 0);
    gpanel.add(mac, 0, 1);
    gpanel.add(android, 1, 1);

那是因为找不到图片,需要去掉路径开头的res,例如:

这个:"res/windows.png" -> 应该是:"/windows.png" ...等等。

因为 getResourceAsStream(String name) 通过搜索与 class 关联的资源找到具有给定名称的资源,它从项目的根目录开始,但因为 res 不是另一个包,所以你不需要将它添加到相对路径的开头。

此外,假设您在另一个名为 anotherPackage 的包中有 windows.png,那么您可以从 main Class(在您的示例中)访问它,例如这个:"/anotherPackage/windows.png".