Java ImageView可以';找不到图像URL

Java ImageView可以';找不到图像URL,java,image,javafx,imageview,gridpane,Java,Image,Javafx,Imageview,Gridpane,我在网格窗格中显示图像时遇到问题。我得到一个错误,输入流不能为null。异常位于ImageView的创建对象的第一行。正如你们所看到的,图片都在文件夹中。什么可能是问题 ImageView windows = new ImageView(new Image(Main.class.getResourceAsStream("res/windows.png"))); ImageView linux = new ImageView(new Image(Main.class.getReso

我在网格窗格中显示图像时遇到问题。我得到一个错误,输入流不能为null。异常位于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)
通过搜索与类关联的资源来查找具有给定名称的资源,并且该资源从项目的根开始,但是因为
res
不是另一个包,所以不需要将其添加到相对路径的开头


此外,假设您将
windows.png
放在另一个名为
anotherPackage
的包中,那么您可以从
main
类(在您的示例中)访问它,如下所示:
“/anotherPackage/windows.png”

谢谢,我通过创建File类的对象解决了它,将对象放入图像对象和ImageView对象中