java - 读取要在 JLabel 中显示的 "ImageIO.read"的图像路径

标签 java swing bufferedimage embedded-resource javax.imageio

完整的本地路径(C:\\Users\\workspace\\myproject\\src\\eclipse\\mainclass\\icons\\my-image.png)工作正常,但使用像下面代码中的短路径会给出异常 javax.imageio.IIOException: Can't read input file!.

我在这里做错了什么?

    JLabel lab_h1 = new JLabel();
    BufferedImage img = null;

    try {
        img = ImageIO.read(new File("icons/my-image.png"));

    } catch (IOException e) {
        e.printStackTrace();
    }

    Image dimg = img.getScaledInstance(140, 40,Image.SCALE_SMOOTH);

    lab_h1.setIcon(new ImageIcon(dimg));

最佳答案

您遇到的问题是,当您尝试使用相对路径打开文件时,它看起来与您运行程序的位置相关。您可以使用资源,而不是希望获得正确的路径。

BufferedImage img = ImageIO.read( 
       YourClassName.class.getResource(
             "/mainclass/icons/my-image.png"
       ) 
 );

我认为您可能需要修改路径,因为我不知道您的包结构是什么。我还假设 Eclipse 将捆绑源文件夹中的资源文件。

关于java - 读取要在 JLabel 中显示的 "ImageIO.read"的图像路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60976527/

相关文章:

java - OnclickListener 尝试将多个变量保存到常量文件时崩溃

java - selectOneMenu 的粗体第二项

java - 从 .txt 文件读取到 JFrame

java - 我有一个 JButton 的 2D 数组,但似乎只有一个 JButton 添加到我的面板中

android - BufferedImage 安卓端口

java - thymeleaf : How to access elements of hash set one by one?

java - JFrame 和可见性 : issue with fading out and getting a screenshot

java - JTable 表头对齐

java - 将 RGB 像素转换为灰度会使暗像素呈现蓝色

java - Java 抗锯齿灰度图像的洪水填充算法