gpt4 book ai didi

java - 我收到错误 "AWT-EventQueue-0"java.lang.NullPointerException 并且我不明白为什么在我的上下文中

转载 作者:行者123 更新时间:2023-12-01 23:17:28 24 4
gpt4 key购买 nike

我正在制作一个游戏,并有一个类来打印屏幕上的所有内容。我在这一行收到错误: g.drawImage(chImage, imageP.x*scale, imageP.y*scale, null); 是因为我末尾有 null 吗?我查找了这个错误并试图找出它,我知道该行中的某些内容为空,但我无法弄清楚什么是空或如何修复它。如果您需要我发布其他类(class),我可以。到目前为止,从我的谷歌搜索来看,我认为这可能与我的变量初始化方式有关。

package Game;

import java.awt.Graphics;
import java.awt.Point;
import java.awt.Rectangle;
import java.awt.image.BufferedImage;
import java.util.ArrayList;

import javax.swing.JPanel;

public class Printer extends JPanel{
private Map map;
private Character ch;
private int scale;
private Point imageP;
private BufferedImage chImage;
private ArrayList<Rectangle> part;

public Printer(int scale1){
scale = scale1;
map = new Map();
ch = new Character();
imageP = ch.getPoint();
chImage = ch.getImage();
part = map.setPart();
}


protected void paintComponent(Graphics g) {
super.paintComponent(g);

g.drawImage(chImage, imageP.x*scale, imageP.y*scale, null);

for(int i=0; i<part.size(); i++){
Rectangle temp = new Rectangle(part.get(i));
g.drawRect(temp.x, temp.y, temp.width, temp.height);
g.fillRect(temp.x, temp.y, temp.width, temp.height);
}


}

}


package Game;

import java.awt.Graphics;
import java.awt.Point;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;

import javax.imageio.ImageIO;
import javax.swing.JPanel;

//Creates a image for a character and allows him to walk around the screen
public class Character extends JPanel{

private BufferedImage image;
private Point imageP;
private int speed;
private int scale;
private int width;
private int height;

public Character(){

}

public Character(int x, int y, int scale1, int w, int h){
super();
try {
image = ImageIO.read(new File("F:\\Programming\\Final Project\\Top_down\\narwhal.png"));
} catch (IOException ex) {

}
scale = scale1;
imageP = new Point(x,y);
speed = 10;
width = w;
height = h;
addKeyListener(new KeyAdapter(){
@Override
public void keyPressed(KeyEvent evt){
moveIt(evt);
}
});
}


public void moveIt(KeyEvent evt){
switch(evt.getKeyCode()){
case KeyEvent.VK_S:
if(imageP.y <= height-33)
imageP.y += 1*speed;
break;
case KeyEvent.VK_W:
if(imageP.y >=0+5)
imageP.y -= 1*speed;
break;
case KeyEvent.VK_A:
if(imageP.x >=0+5)
imageP.x -= 1*speed;
break;
case KeyEvent.VK_D:
if(imageP.x <= width-30)
imageP.x += 1*speed;
break;
}
repaint();
}


public Point getPoint(){
//g.drawImage(image, imageP.x*scale, imageP.y*scale, null); IGNORE THIS
return this.imageP;
}

public BufferedImage getImage(){
return this.image;
}


}

最佳答案

确保您的 chImage 实际上是一个 Image。换句话说,一个简单的测试就是打印到 System.out,这里是一个示例:

    System.out.println("chImage: " + chImage);

如果 chImage 在输出中打印类似 AwtImage@17089 的内容,则它会被加载。如果 if 在该位置显示为 null,则表示没有加载图像。检查您的图像路径(如果发生这种情况),或者图像名称拼写是否正确。

关于java - 我收到错误 "AWT-EventQueue-0"java.lang.NullPointerException 并且我不明白为什么在我的上下文中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21010061/

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