gpt4 book ai didi

java - 无法在 JFrame 中显示 JPEG 图像

转载 作者:行者123 更新时间:2023-11-29 05:40:15 24 4
gpt4 key购买 nike

我正在尝试为我正在编写的小游戏获取背景图像以显示在 JFrame 上。图像是 .jpg,我不断收到这些错误:

Exception in thread "main" java.lang.NullPointerException
at javax.swing.ImageIcon.<init>(ImageIcon.java:205)
at web.game.Base.<init>(Base.java:45)
at web.game.Base.main(Base.java:61)

我的代码是:

Image myimage;

public Base() {
ImageIcon ii = new ImageIcon(this.getClass().getResource("myimage.jpg"));
myimage = ii.getImage();
}

public void paint(Graphics g) {

Graphics2D g2d = (Graphics2D) g;
g2d.drawImage(myimage, 10, 10, null);

最佳答案

您遇到问题的原因有很多。最明显的开始,图像不存在(或者至少不存在你认为它存在的地方)

private BufferedImage myImage;

public Board() {
try {
myimage = ImageIO.read(this.getClass().getResource("/myimage"));
} catch (IOException exp) {
exp.printStackTrace();
}
}

protected void paintComponent(Graphics g) {
super.paintComponent(g);
if (myImage != null) {
Graphics2D g2d = (Graphics2D) g;
g2d.drawImage(myimage, 10, 10, this);
System.out.println("Background Image");
}
}

您可能会发现 Performing Custom PaintingReading/Loading an Image有一定的用处。

使用 getResource 时,您有两个(基本)选择。相对或绝对。

使用相对路径,类加载器将根据类的上下文开始搜索。因此,如果您的图像位于项目的根文件夹中,但您的类位于(包的)子文件夹中,则相对路径将不起作用,因为类加载器将从类所在的位置开始搜索。

绝对路径将允许您从类路径的根开始搜索,这将更有帮助,尤其是在您的情况下。

尝试这样的事情,看看你会得到什么..

System.out.println(TestReference.class.getResource("myimage.jpg"));
System.out.println(TestReference.class.getResource("/myimage.jpg"));

关于java - 无法在 JFrame 中显示 JPEG 图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17893410/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com