我收到此错误
Caused by: java.lang.IllegalArgumentException: Invalid URL: unknown
protocol: c at javafx.scene.image.Image.validateUrl(Image.java:1097)
at javafx.scene.image.Image.<init>(Image.java:598)
at javafx.scene.image.ImageView.<init>(ImageView.java:164)
at fileshare_client.fx.pkg1.UploadappUI_1Controller.iconimagebuttonAction(UploadappUI_1Controller.java:355)" java:355
是
imageview=new ImageView(iconimage.getAbsolutePath());"
这是我的代码:
@FXML
private AnchorPane mainAnchorpane;
@FXML
private ImageView imageview;
private File iconimage;
@FXML
public void iconimagebuttonAction(ActionEvent event) {
FileChooser filechooser = new FileChooser();
iconimage = filechooser.showOpenDialog(mainAnchorpane.getScene().getWindow());
System.out.println(iconimage.getName());
if (iconimage != null) {
String iconimagepath = iconimage.getAbsolutePath();
System.out.println(iconimagepath);
**imageview=new ImageView(iconimage.getAbsolutePath());**// error
}
}
答案 0 :(得分:5)
使用
iconimage.getAbsolutePath()
为您提供文件的绝对路径,构造函数需要file URL
尝试使用
iconimage.toURI().toString()
或将file:
追加到绝对路径
"file:" + iconimage.getAbsolutePath()
答案 1 :(得分:1)
以下是我使用的代码片段。
File imageFile = new File("mountains001.jpg");
System.out.println(imageFile.getAbsolutePath());
if (imageFile.exists()) {
ImageView imageView = new ImageView();
Image image = new Image(imageFile.toURI().toString());
imageView.setImage(image);
root.getChildren().add(imageView);
}
答案 2 :(得分:0)
此处必须在ImageView的构造函数中提供URL
所以建议的代码是:
@FXML
public void iconimagebuttonAction(ActionEvent event) {
FileChooser filechooser = new FileChooser();
iconimage = filechooser.showOpenDialog(mainAnchorpane.getScene().getWindow());
System.out.println(iconimage.getName());
if (iconimage != null) {
try {
String iconimagepath = iconimage.getAbsolutePath();
System.out.println(iconimagepath);
imageview=new ImageView(iconimage.toURI().toURL().toExternalForm());
} catch (MalformedURLException ex) {
Logger.getLogger(UploadappUI_1Controller.class.getName()).log(Level.SEVERE, null, ex);
}
}
}