我想图像添加到一个JPanel类,我使用的方法getResource()
但它返回Exception in thread "main" java.lang.IllegalArgumentException: input == null!
,因为路径到我给的图像文件夹是无效的,现在我要如何获得有效的路径,我意识到也许这很容易,这不是我要问的问题,但我花了很多时间并尝试不同的路径,但它不起作用;java如何使用getResource()添加图像?
这里的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项目,所以这个类的路径是: pr ojectName的\ src \主\ java的\程序\ mainClass.java PROJECTNAME的\ src \主\ java的\程序\ Application.java
我创建了一个文件夹 “ressources” 我把图像还有,这里的路径 PROJECTNAME \ ressources \ image.png
谢谢。
根据您的目录结构,我假设你使用Maven。要添加到jar中的资源(可以通过'getResources'访问)应放在'projectName \ src \ main \ resources'中,然后可以通过省略“resources”目录名来访问它们。例如,如果你有一个名为'PROJECTNAME资源的\ src \主\资源\ Image.png',你会再使用使用'的getClass()的getResource( “/ Image.png”);' – MadProgrammer
@MadProgrammer现在我懂了,谢谢你。 – cbInfo009
你的意思是“资源”?错字是否会导致问题? –