在JavaFX中加载图像
我正在尝试使用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()
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);