【发布时间】:2016-03-10 00:49:51
【问题描述】:
我想将图像添加到 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 项目,所以这些类的路径是: 项目名称\src\main\java\application\mainClass.java 项目名称\src\main\java\application\Application.java
我创建了一个文件夹“资源”并将图像放在那里,这里是路径 projectName\ressources\image.png
谢谢。
【问题讨论】:
-
根据您的目录结构,我假设您使用的是 Maven。您要添加到 jar 中的资源(以后可以通过
getResources访问)应该放在projectName\src\main\resources中,然后可以通过省略resources目录名称来访问它们。例如,如果您有一个名为projectName\src\main\resources\Image.png的资源,那么您将使用 usegetClass().getResource("/Image.png"); -
@MadProgrammer 现在我明白了,谢谢。
-
您的意思是“资源”吗?错字“资源”是否导致问题?
-
@Chrustopher Bottoms 实际上就像 MadProgrammer 解释的那样,文件夹资源应该在 src/main 文件夹中,是的,我写了 ressources(法语哈哈),它应该是资源。 :)
标签: java swing path getresource