我在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);
答案 0 :(得分:3)
那是因为它没有找到图像,你需要删除路径开头的res
,例如:
这:"res/windows.png"
- >应该是:"/windows.png"
......等等。
因为getResourceAsStream(String name)
通过搜索与该类关联的资源找到具有给定名称的资源,并且它从项目的根开始,但因为res
不是另一个包,所以您不需要将它添加到相对路径的开头。
此外,假设您在另一个名为windows.png
的软件包中有anotherPackage
,那么您可以从main
类(在您的示例中)访问它,如下所示:{{1} }。