在JavaFX中加载图像

时间:2015-09-19 14:29:24

标签: java javafx-2

我正在尝试使用它的Image类在JavaFX中加载图像。

这是我的代码:

Image image = new Image(file.getAbsolutePath());

file只是加载图片的文件。

我收到以下错误:

  

java.lang.IllegalArgumentException:找不到无效的网址或资源

这是完整的代码:

FileChooser fileChooser = new FileChooser();
fileChooser.getExtensionFilters().addAll(
        new FileChooser.ExtensionFilter("JPG","*.jpg"),
        new FileChooser.ExtensionFilter("JPEG","*.jpeg")
);
fileChooser.setTitle("Choose file...");
fileChooser.setInitialDirectory(
        new File(System.getProperty("user.home"))
);
File file = fileChooser.showOpenDialog(stageOfEvent);

if(file != null) {
    Image image = new Image(file.getAbsolutePath());
    imageView.setImage(image);
}

1 个答案:

答案 0 :(得分:2)

为了使用位于文件系统中的文件构造Image,您需要使用file:协议,如下所示:

Image image = new Image("file:" + file.getAbsolutePath());

不指定它告诉JavaFX在类路径中而不是在文件系统中查找图像。

引用Image Javadoc:

// The image is located in my.res package of the classpath
Image image2 = new Image("my/res/flower.png", 100, 150, false, false);

// The image is located in the current working directory
Image image4 = new Image("file:flower.png", 0, 100, false, false);

此构造来自Java的URL语法。

如评论中@mipa所述,您也可以使用:

Image image = new Image(file.toURI().toURL().toExternalForm());