我正在尝试使用它的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);
}
答案 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());