相对URL在javafx中不起作用

相对URL在javafx中不起作用,java,url,javafx,Java,Url,Javafx,我想在标签上贴一张图片,代码是: Label userPic = new label(); ImageView userImage = new ImageView( new Image("test/123/headPortrait.png",50.0,50.0,false,false)); userPic.setGraphic(userImage); 但它不断抛出java.lang.IllegalArgumentException:

我想在标签上贴一张图片,代码是:

Label userPic = new label();

ImageView userImage = new ImageView(
                             new Image("test/123/headPortrait.png",50.0,50.0,false,false));

userPic.setGraphic(userImage);
但它不断抛出
java.lang.IllegalArgumentException:无效URL或未找到资源。

我试过
file://headPortrait.png
文件://E:/eclipse/ClassSchedule/headcrative.png
(绝对URL)。这一次编译器没有抛出任何异常,但映像仍然不会显示,应用程序运行非常缓慢


在我尝试将图像添加到标签之前,我的所有代码都工作得很好。

将ImageView放入标签中不是一个好做法。我建议您直接将ImageView添加到场景中。 要在类路径中加载图像,最好的方法是使用ResourceStream

this.getClass().getResourceAsStream("/assets/headPortrait.png")
例如。在这种情况下,图像必须位于名为assets的文件夹中。 您的整个代码可能如下所示:

ImageView imageView = new ImageView(new Image(this.getClass().getResourceAsStream("/assets/headPortrait.png"), 50, 50, false, true));

我建议您将图像构造函数的最后一个布尔标志设置为true,因为它提高了图像的质量。

有效的url应该是
E:/eclipse/ClassSchedule/headratio.png
/test/123/headratio.png
,而不是您所写的,我强烈支持使用,但是为什么不利用
标签
控件的
内容显示
,比如
标签