在 java 中显示图像

Display an image in java

public void loadStdImage() throws IOException
{
    Image image = ImageIO.read(this.getClass().getResource("/Resources/Images/Student/Capture.png"));  //Line 350
    ImageIcon icon = new ImageIcon(image);
    JLabel lblImage = new JLabel(icon);
    lblImage.setIcon(icon);
    lblImage.setBounds(753, 50, 149, 171);
    add(lblImage);
}

我尝试了很多东西...但没有任何效果。连续显示以下运行次错误

Exception in thread "AWT-EventQueue-0" java.lang.IllegalArgumentException: input == null!
    at javax.imageio.ImageIO.read(Unknown Source)
    at View.Student.loadStdImage(Student.java:350)

项目文件夹结构为:

编辑: 找到了解决方案。见下图和上图资源文件夹图标的变化。我将我的资源文件夹添加到 Java 构建路径。右键单击您的项目,转到属性,然后 select 'Java Build Path',从那里将您的文件夹添加到 java 构建路径。 干杯 enter image description here

欢迎来到 SO。由于您是新来的,请阅读此 - https://whosebug.com/help/mcve

让我暂时帮你解决这个问题。

我有标准的 Eclipse 项目:

我的测试 class 看起来像(最小):

package q34460547;

import java.awt.Image;
import java.io.IOException;

import javax.imageio.ImageIO;

public class LoadTest {

    public static void main(String[] args) throws IOException {
        new LoadTest().loadStdImage();
    }

    public void loadStdImage() throws IOException {
        Image image = ImageIO.read(this.getClass().getResource("/ScreenShot005.png"));
    }

}

现在,当我使用

ImageIO.read(this.getClass().getResource("/ScreenShot005.png"));

图像是从 Eclipse 中所谓的源文件夹中加载的。

我用的时候

ImageIO.read(this.getClass().getResource("ScreenShot005.png"));

图像从 LoadTest.java 文件所在的文件夹加载(准确地说它也被编译到同一文件夹 - 在 Eclipse 中它是 bin)。

您可以在此处找到更多信息 - What is the difference between Class.getResource() and ClassLoader.getResource()?

编辑:

图像必须在 class 路径上(使用 Class.getResource 时),这就是它未从 Resources 文件夹加载的原因。有两种选择,使用另一个版本的 ImageIO.read() 或将您的 Resources 文件夹设为源文件夹: