java编程的空指针异常
/**创建日期Sep3,2010**TODO要更改此生成的文件的模板,请转至*窗口-首选项-Java-代码样式-代码模板*/packagecom.view;importj...
/*
* 创建日期 Sep 3, 2010
*
* TODO 要更改此生成的文件的模板,请转至
* 窗口 - 首选项 - Java - 代码样式 - 代码模板
*/
package com.view;
import java.awt.Graphics;
import javax.swing.JPanel;
import com.entities.Food;
import com.entities.Ground;
import com.entities.Snake;
public class GamePanel extends JPanel {
private Snake snake;
private Food food;
private Ground ground;
public void display(Snake snake,Food food,Ground ground){
System.out.println("GamePanel's display");
this.snake=snake;
this.food=food;
this.ground=ground;
this.repaint();
}
protected void paintComponent(Graphics g) {
this.ground.drawMe();
this.snake.drawMe();
this.food.drawMe();
}
}
程序运行到paintComponent函数的 this.ground.drawMe();时候就显示空指针的异常,请问为什么啊,多谢多谢啊 展开
* 创建日期 Sep 3, 2010
*
* TODO 要更改此生成的文件的模板,请转至
* 窗口 - 首选项 - Java - 代码样式 - 代码模板
*/
package com.view;
import java.awt.Graphics;
import javax.swing.JPanel;
import com.entities.Food;
import com.entities.Ground;
import com.entities.Snake;
public class GamePanel extends JPanel {
private Snake snake;
private Food food;
private Ground ground;
public void display(Snake snake,Food food,Ground ground){
System.out.println("GamePanel's display");
this.snake=snake;
this.food=food;
this.ground=ground;
this.repaint();
}
protected void paintComponent(Graphics g) {
this.ground.drawMe();
this.snake.drawMe();
this.food.drawMe();
}
}
程序运行到paintComponent函数的 this.ground.drawMe();时候就显示空指针的异常,请问为什么啊,多谢多谢啊 展开
展开全部
private Ground ground;
该变量没有被初始化 就直接被调用
所以this.ground.drawMe();时候就显示空指针的异常
应该在构造方法或者块中初始化~
该变量没有被初始化 就直接被调用
所以this.ground.drawMe();时候就显示空指针的异常
应该在构造方法或者块中初始化~
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
private Snake snake = new Snake();
private Food food = new Food();
private Ground ground = new Ground();
试试吧,你只做了声明,没初始化形成对象实例。
——————————————————
好像回答错了,你应该在调用paintComponent(Graphics g) 之前先调用display(Snake snake,Food food,Ground ground)方法,应该就可以了。
——————————————————————————
这方法都试试吧,只有这一个类我也看不出什么东西来。
private Food food = new Food();
private Ground ground = new Ground();
试试吧,你只做了声明,没初始化形成对象实例。
——————————————————
好像回答错了,你应该在调用paintComponent(Graphics g) 之前先调用display(Snake snake,Food food,Ground ground)方法,应该就可以了。
——————————————————————————
这方法都试试吧,只有这一个类我也看不出什么东西来。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
ground是否进行了初始化,按照你的设计,应该是在paintComponent之前应该使用display函数将ground等参数初始化。
而paintComponent函数是在JPanel创建之后就自动执行的,即还没有等你执行display函数时paintComponent就已经被调用执行了。
而paintComponent函数是在JPanel创建之后就自动执行的,即还没有等你执行display函数时paintComponent就已经被调用执行了。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询