java如何使用getResource()添加图像? [英] java how to add image using getResource()?
问题描述
我想将图像添加到Jpanel类中,我使用方法getResource()
,但它返回Exception in thread "main" java.lang.IllegalArgumentException: input == null!
,因为我提供的图像文件夹中的路径无效,现在我想如何获取有效的图像路径,我知道也许这确实很容易,这不是我在这里要问的问题,但是我花了很多时间并尝试了不同的路径,但这是行不通的;
I want to add an image to a Jpanel Class, I use the method getResource()
but it returns Exception in thread "main" java.lang.IllegalArgumentException: input == null!
, because the path into the image folder that i give is not valid, now I want how to get the valid path, I'm aware that maybe it's really easy and it's not a question that I've to ask here but I'm spending a lot of time and trying different path but it doesn't work;
这里是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"));
the error is clearly in the line
image = ImageIO.read(getClass().getResource("/ressources/image.png"));
由于路径无效, 我使用的是Maven项目,因此此类的路径为: projectName \ src \ main \ java \ application \ mainClass.java projectName \ src \ main \ java \ application \ Application.java
cause the path is not valid, I use a maven project, so the path of this classes is : projectName\src\main\java\application\mainClass.java projectName\src\main\java\application\Application.java
我创建了一个文件夹"resources",并将图像放在此处,这里是路径 projectName \ ressources \ image.png
I created a folder "ressources" and i put the image there, here the path projectName\ressources\image.png
谢谢.
推荐答案
您需要将图像放置在src/main/resources/image.png中,以使其在该项目的资源根目录中可见...并且观看资源拼写.参见 http://www.mkyong.com/java /java-read-a-file-from-resources-folder/获取资源加载的简要摘要.
You need to place your image in src/main/resources/image.png for it to be seen as in the resource root of this project...and watch that spelling of ressource. See http://www.mkyong.com/java/java-read-a-file-from-resources-folder/ for a nice summary of resource loading.
然后此行应该起作用;
Then this line should work;
image = ImageIO.read(getClass().getClassLoader().getResource("image.png")
image = ImageIO.read(getClass().getClassLoader().getResource("image.png")
这篇关于java如何使用getResource()添加图像?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!