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
图像和 Image
。 fxml
有这个:
<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()));
我正在尝试学习 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
。我试图将 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()));