在JavaFX中加载图像

在JavaFX中加载图像,java,javafx-2,Java,Javafx 2,我正在尝试使用JavaFX的image类在JavaFX中加载图像 这是我的密码: Image image = new Image(file.getAbsolutePath()); 文件只是一个加载图像的文件 我得到以下错误: java.lang.IllegalArgumentException:找不到无效的URL或资源 以下是完整的代码: FileChooser fileChooser = new FileChooser(); fileChooser.getExtensionFilters()

我正在尝试使用JavaFX的
image
类在JavaFX中加载图像

这是我的密码:

Image image = new Image(file.getAbsolutePath());
文件
只是一个加载图像的文件

我得到以下错误:

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

以下是完整的代码:

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);
}
为了使用位于文件系统中的文件构造一个,您需要使用
文件:
协议,如下所示:

Image image = new Image("file:" + file.getAbsolutePath());
不指定它会告诉JavaFX在类路径中查找映像,而不是在文件系统中

引用图像Javadoc:

这个结构来自Java的语法

正如@mipa在评论中指出的,您还可以使用:

Image image = new Image(file.toURI().toURL().toExternalForm());
你可以用它来代替


这个平台独立吗?@TrtTrt你为什么这么认为?不,不是。为什么你想让你的代码依赖于平台?我的代码,是平台独立的,我想让这部分成为平台independent@TrtTrt对不起,我误读了你的问题,我答案中的代码与平台无关。
Image image = new Image(file.toURI().toURL().toExternalForm());
Image image = ImageIO.read(file);