JavaFX:FXML 打开图像格式错误 URL 异常协议:e

JavaFX: FXML opening image malformed URL exception protocol: e

我正在尝试学习 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 图像和 Imagefxml 有这个:

<ImageView fx:id = "image"/>

当我尝试 运行 它时,它给我错误 MalformedURLException: unknown protocol e。我试图将 url 手动打入 fxml 以查看它是否手动加载,

<ImageView>
<image>
<Image url = "@E:\test.jpg"/>
</image>
</ImageView>

但它仍然给我同样的错误。

如果您打算根据文件系统中的文件(例如用户选择的文件)设置图像,则需要创建一个代表该文件的URL。

你不应该尝试自己构造它,而应该使用 File.toURI() 方法,它处理创建协议和解析无效 URLs 的文件路径(例如包含非法的文件名URL 个字符,例如空格)正确。

所以你应该这样做

File file = new File(CList.get(0).getPicture());
image.setImage(new Image(file.toURI().toString()));