【问题标题】:image view in javaFx [duplicate]javaFx中的图像视图[重复]
【发布时间】:2021-08-24 11:41:46
【问题描述】:

你好,我搜索了很多解决方案,但对我没有任何帮助

    public void initialize(URL url, ResourceBundle rb) {
    Image image = new Image(IMG_PATH);
    photoAdmin.setImage(image);}

这是 IMG_PATH

    public static final String IMG_PATH = "C:\\Users\\ibeno\\Documents\\GitHub\\PiDev\\PiDev\\Images\\11880660_447255635481530_1415231414421167737_n.jpg";

我将 photoAdmin 声明为 ImageView 但仍然出现此错误

Caused by: java.lang.IllegalArgumentException: Invalid URL: unknown protocol: c
Caused by: java.net.MalformedURLException: unknown protocol: c

【问题讨论】:

    标签: java javafx uiimageview imageview


    【解决方案1】:

    c 被解释为URL 协议。

    file:// 添加到您的路径以修复它:

    public static final String IMG_PATH = "file:///C:/Users/ibeno/Documents/GitHub/PiDev/PiDev/Images/11880660_447255635481530_1415231414421167737_n.jpg"";
    

    但正如@James_D 所提到的,这不是一个非常聪明的解决方案,因为我们对 URL 的值进行了硬编码,更好的方法是通过 Paths API:

    final String IMG_PATH = "C:\\Users\\ibeno\\Documents\\GitHub\\PiDev\\PiDev\\Images\\11880660_447255635481530_1415231414421167737_n.jpg";
    String pathUrl = Paths.get(IMG_PATH).toUri().toURL().toString();
    Image image = new Image(pathUrl);
    

    【讨论】:

    • 谢谢它的工作当我打开页面时我想显示当前用户的图像照片的名称保存在数据库中但是当我输入 (IMG_PATH+ a.getPhoto);它不会显示任何东西
    • 我很高兴它成功了,如果有帮助,请点赞并接受答案。您如何将照片保存在数据库中。作为照片的名称?我建议再问一个问题并将所有细节都放在那里,我会尽力帮助你。
    • 虽然这并不是一个真正强大的解决方案。图像通常是资源,应捆绑为应用程序的一部分。如果应用程序在另一台机器上运行,尤其是在另一个平台上,这个解决方案将会失败。永远不应该像这样手动构建 URL;如果您真的想从文件系统(而不是资源)中读取图像,请使用 ~file` 或 Path API 来构造 URL。
    • @James_D 感谢您的评论,我根据您的建议更新了答案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-03
    • 1970-01-01
    • 1970-01-01
    • 2017-12-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多