在 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
文件夹设为源文件夹:
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
文件夹设为源文件夹: