我想将图像添加到Jpanel类中,我使用方法getResource()
但它返回Exception in thread "main" java.lang.IllegalArgumentException: input == null!
,因为我提供的图像文件夹的路径无效,现在我想要如何为了得到有效的路径,我知道也许它真的很容易,这不是我要问的问题,但我花了很多时间尝试不同的路径,但它不起作用;
这里是Jpanel类
import javax.imageio.ImageIO;
import javax.swing.*;
import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.IOException;
public class Application extends JPanel {
private BufferedImage image;
public Application() {
try {
image = ImageIO.read(getClass().getResource("/ressources/image.png"));
} catch (IOException ex) {
System.out.println("problem! image can't be loaded!");
}
}
@Override
protected void paintComponent(Graphics g)
{
super.paintComponent(g);
g.drawImage(image, 0, 0, null);
}
}
这里是主要的课程
import javax.swing.*;
//import java.awt.*;
public class mainClass {
public mainClass () {
JFrame app = new JFrame();
app=.setTitle("main window");
app=.setSize(400, 400);
app=.setLocationRelativeTo(null);
app=.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
app=.add(new Application());
app=.setVisible(true);
}
public static void main(String[] args) {
mainClass class = new mainClass();
}
}
错误显然在行中
image = ImageIO.read(getClass().getResource("/ressources/image.png"));
导致路径无效, 我使用maven项目,所以这个类的路径是: 的 PROJECTNAME \ SRC \主\的java \应用\ mainClass.java PROJECTNAME \ SRC \主\的java \应用\ Application.java
我创建了一个文件夹“ressources”,我将图像放在那里,这里是路径 的 PROJECTNAME \ ressources \ image.png
谢谢。答案 0 :(得分:2)
您需要将图像放在src / main / resources / image.png中,以便在此项目的资源根目录中看到它...并观察ressource的拼写。有关资源加载的详细摘要,请参阅http://www.mkyong.com/java/java-read-a-file-from-resources-folder/。
然后这条线应该工作;
image = ImageIO.read(getClass()。getClassLoader()。getResource(" image.png")
答案 1 :(得分:0)
Aidan和abu的回答都是正确的,但我们可以在这里澄清一下。
项目的标准根文件夹定义为" src" ( JavaProject / src ),所以我们可以将 image.png 放在此文件夹中并输入:
1st method: image = ImageIO.read(new File("image.png"));
从您的程序(在Eclipse中)的角度来看,这将得到与此相同的结果:
2nd method: image = ImageIO.read(getClass().getClassLoader().getResource("image.png"));
现在,区别在于,当您要在 .jar 文件中导出项目时,第一行不会导出image.png文件,因为导出仅编译资源首先,你会得到错误,因为程序不再看到图像。这是第二种方法很有用的地方。因为它还会导出jar文件中的图像。您可以在内部使用winrar进行验证。
答案 2 :(得分:-1)
将ressources文件夹放在src文件夹中。