我有这段代码:
package test;
import javax.imageio.ImageIO;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.WindowConstants;
import java.awt.Graphics;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
public class SwingSandbox {
public static void main(String[] args) throws IOException {
JFrame frame = buildFrame();
final BufferedImage image = ImageIO.read(new File("C:\\Projects\\Test\\src\\test\\InterestCalcGraphic.jpg"));
JPanel pane = new JPanel() {
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
g.drawImage(image, 0, 0, null);
}
};
frame.add(pane);
}
private static JFrame buildFrame() {
JFrame frame = new JFrame();
frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
frame.setSize(200, 200);
frame.setVisible(true);
return frame;
}
}
当我运行它时,我收到此错误消息:
Exception in thread "main" javax.imageio.IIOException: Can't read input file!
at javax.imageio.ImageIO.read(ImageIO.java:1301)
at test.SwingSandbox.main(SwingSandbox.java:17)
错误消息让我相信我的文件路径不正确,但图像存储在我的文件目录中的Test-src-test下。我做错了什么?
答案 0 :(得分:1)
ImageIO甚至没有尝试加载您的图片文件。你的文件本身有问题。例如。你的路径不正确。试着打电话给这个
File f = new File("C:\\Projects\\Test\\src\\test\\InterestCalcGraphic.jpg");
boolean value = f.canRead();
value
变量的布尔值是多少?如果它false
检查您的图像文件路径,文件名拼写错误等。
答案 1 :(得分:1)
我创建了一个名为graphics的文件夹,然后在我的路径中只使用了文件夹名称,没有别的。像这样:
final BufferedImage image = ImageIO.read(new File("graphics/a.jpg"));
答案 2 :(得分:0)
我认为你想要从类路径中读取文件。
final BufferedImage defaultImage =
ImageIO.read(
this.getClass().getResourceAsStream("/graphics/file.png"));
将文件放在src / main / resource / graphics中。 (对于maven默认值)