【问题标题】:How can I find the java.net.URL for an image needed for ImageIcon?如何找到 ImageIcon 所需图像的 java.net.URL?
【发布时间】:2023-03-18 15:49:01
【问题描述】:

我正在尝试将 ImageIcon 添加到 JLabel 我正在添加到 JPanel 以获取我的 Java Swing 游戏的图形。但是,我似乎无法使用我当前的代码为 JLabel 创建 ImageIcon。我已经尝试过查看 Stack Overflow,但找不到适合我的问题的答案。请帮忙

protected ImageIcon createImageIcon(Class c, String file) {
        File f = new File(file);
        String path = f.getAbsolutePath();
        
        java.net.URL imgURL = c.getResource(path);
        
        System.out.println(imgURL);
        System.out.println(path);
        
        if (path != null) {
            return new ImageIcon(path);
        } else {
            System.err.println("Couldn't find file: " + path);
            return null;
        }
    }

调用自:

Graphic startScreenG = new Graphic();
        Icon startScreenI = startScreenG.createImageIcon(MyAppClass, "download.jpg");
        JLabel startScreen = new JLabel(startScreenI);
        Screen.add(startScreen);

这会返回:

C:\Users*justmyname*\Documents\NetBeansProjects\IA\download.jpg

【问题讨论】:

    标签: java swing graphics icons imageicon


    【解决方案1】:

    请注意,getResource 按名称而不是文件路径工作。因此,要使c.getResource(path) 按您的意图工作,“download.jpg”文件需要位于类路径 IIRC 中。但是由于您已经有一个代表您需要的图像文件的 File 对象,您可以简单地调用f.toURI().toURL() 请注意,f.toURL() 已弃用。

    希望对你有帮助!

    【讨论】:

    • 程序打包为.jar时,依赖文件不起作用。
    • 我设法获得了图片的 URL,但它仍然没有出现在 JPanel 中
    猜你喜欢
    • 1970-01-01
    • 2021-08-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-04
    • 1970-01-01
    相关资源
    最近更新 更多