Java 如何修复NullPointerException?
我正在制作一个游戏,但当我试图启动它时,它说:Java 如何修复NullPointerException?,java,nullpointerexception,Java,Nullpointerexception,我正在制作一个游戏,但当我试图启动它时,它说:java.lang.NullPointerException g.drawImage(image, 500, 200, 124, 280, null); 代码如下: package com.shinxs.rain.graphics; import java.awt.Graphics; import java.awt.Image; import java.util.Random; import javax.swing.ImageIcon; pub
java.lang.NullPointerException
g.drawImage(image, 500, 200, 124, 280, null);
代码如下:
package com.shinxs.rain.graphics;
import java.awt.Graphics;
import java.awt.Image;
import java.util.Random;
import javax.swing.ImageIcon;
public class Screen {
private int width, height;
public int[] pixels;
Graphics g;
public int[] tiles = new int[64 * 64];
private Random random = new Random();
ImageIcon i = new ImageIcon("Resources/Inventory.png");
Image image = i.getImage();
public Screen(int width, int height) {
this.width = width;
this.height = height;
pixels = new int[width * height];
for (int i = 0; i < 64 * 64; i++) {
tiles[i] = random.nextInt(0xFFFFFF);
}
}
public void clear() {
for (int i = 0; i < pixels.length; i++) {
pixels[i] = 0;
}
}
public void render() {
g.drawImage(image, 500, 200, 124, 280, null);
}
}
package com.shinxs.rain.graphics;
导入java.awt.Graphics;
导入java.awt.Image;
导入java.util.Random;
导入javax.swing.ImageIcon;
公共类屏幕{
私人int宽度、高度;
公共整数[]像素;
图形g;
公共int[]tiles=新int[64*64];
私有随机=新随机();
ImageIcon i=新的ImageIcon(“Resources/Inventory.png”);
Image=i.getImage();
公共屏幕(整数宽度、整数高度){
这个。宽度=宽度;
高度=高度;
像素=新整数[宽度*高度];
对于(int i=0;i<64*64;i++){
tiles[i]=random.nextInt(0xFFFFFF);
}
}
公共空间清除(){
对于(int i=0;i
请告诉我,如果你知道如何修复它,我已经被困了很长时间了
Graphics g;
您的g
指向null引用,您正在null上调用drawImage
,这将导致NPE(NullPointerException
)
参见本教程,您从未初始化过图形g;对象及其调用方法, 您必须初始化图形对象,否则它将为null,因为对象的默认值为null
图形对象为空,因为您从未指定任何其他值。Null表示对象为“空”且不包含任何数据,这是要初始化的对象的逻辑值。为了使用图形对象,您需要访问预先制作的对象,因为图形类没有公共构造函数(new Graphics()不起作用)。我所知道的唯一方法是扩展javax.swing.JFrame并覆盖画图(Graphics g),其中预实例化的图形对象作为参数传递。图形对象由JFrame的内部工作创建
class Screen extends javax.swing.JFrame{
public void paint(Graphics g){
super.paint(g); //correctly draws background
//now call methods on g, the graphics object
}
}
我强烈建议您查看有关Swing的文档,以了解其工作原理。首先,查找并研究异常回溯。它将告诉你你需要知道的大部分。请阅读一些java,比如对象属性的默认值……如果你有任何其他异常,请在这里发布stacktrace。
class Screen extends javax.swing.JFrame{
public void paint(Graphics g){
super.paint(g); //correctly draws background
//now call methods on g, the graphics object
}
}