问题描述
我正在尝试学习JavaFX,并制作一个可以显示用户表视图中的用户图像的用户列表。这是我的代码:
@FXML private ImageView image;
@FXML
public void buttonSHow(ActionEvent actionEvent) throws MalformedURLException,FileNotFoundException {
CList =TAbleview.getSelectionModel().getSelectedItems();
System.out.println(CList.get(0).getPicture());
//URL url = new URL(CList.get(0).getPicture());
//FileInputStream input = new FileInputStream (CList.get(0).getPicture());
image.setImage(new Image(CList.get(0).getPicture()));
}
我要用此代码执行的操作是使用存储在用户列表中的绝对路径为ImageView
设置Image
图像。 fxml
具有此功能:
<ImageView fx:id = "image"/>
当我尝试运行它时,它显示了MalformedURLException: unknown protocol e
的错误。我试图将网址手动打入fxml
中以查看其是否手动加载,
<ImageView>
<image>
<Image url = "@E:\test.jpg"/>
</image>
</ImageView>
但是它仍然给我同样的错误。如果这是一个愚蠢的问题,我感到抱歉。我是自己编程和学习的新手
解决方法
如果您打算基于文件系统中的文件(例如,由用户选择的文件)设置图像,则需要创建一个表示文件的URL。
您不应该自己尝试构造它,而应该使用Android 10.0
方法,该方法可以处理协议的创建并解决无效URL的文件路径(例如,包含非法URL字符的文件名,例如空格)正确。
所以你应该做
File.toURI()