java.lang.NullPointerException

dragonmuou 2011-04-16 11:11:29
Image floor=new ImageIcon("image/floor.jpg").getImage();
int floorwidth,floorheigth;
Image chara;
Graphics draw_chara;
public void floor(){
chara = createImage(250,250);
draw_chara = chara.getGraphics();//41
floorwidth=floor.getWidth(this);
floorheigth = floor.getHeight(this);
for(int i=0;i<250;i+=floorwidth)
for(int j=0;j<250;j+=floorwidth)
draw_chara.drawImage(floor, j, i, j+floorwidth, i+floorwidth, 0,0,floorwidth,floorwidth,this);
repaint();
}
@Override
public void paintComponent(Graphics g){
super.paintComponent(g);
g.drawImage(chara, 0, 0, this);
}
public Migong(){
this.floor();
}





###########################
提示错误:
Exception in thread "main" java.lang.NullPointerException
at migong.Migong.floor(Migong.java:41)
...全文
128 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
pinefantasy 2011-04-16
  • 打赏
  • 举报
回复
//没有接触过java的AWT、SWING包,不是特别清楚背景细节,调试了看下,chara = createImage(250, 250);返回的是null,楼主可以看看底层的方法。

public void floor() {
chara = createImage(250, 250);

//此处报错了、空指向异常 //说明上一句返回的对象为null)
draw_chara = chara.getGraphics();
// ...
}
dragonmuou 2011-04-16
  • 打赏
  • 举报
回复
Exception in thread "main" java.lang.NullPointerException
at migong.Migong.floor(Migong.java:41)
at migong.Migong.<init>(Migong.java:55)
at migong.Jie_mian.<init>(Migong.java:27)
at migong.Migong.main(Migong.java:59)
dragonmuou 2011-04-16
  • 打赏
  • 举报
回复
import javax.swing.*;
import java.awt.*;
class SWingConsole{
public static void run(final JFrame f,final int width,final int height){;
f.setTitle("window");
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setSize(width, height);
f.setLocation(400,200);
f.setVisible(true);
f.setResizable(false);
}
}

/**
*
* @author 木偶
*/
class Jie_mian extends JFrame{
public Jie_mian(){
add(new Migong());
}
}
public class Migong extends JPanel{

/**
* @param args the command line arguments
*/
Image floor=new ImageIcon("image/floor.jpg").getImage();
int floorwidth,floorheigth;
Image chara;
Graphics draw_chara;
public void floor(){
chara = createImage(250,250);
draw_chara = chara.getGraphics();
floorwidth=floor.getWidth(this);
floorheigth = floor.getHeight(this);
for(int i=0;i<250;i+=floorwidth)
for(int j=0;j<250;j+=floorwidth)
draw_chara.drawImage(floor, j, i, j+floorwidth, i+floorwidth, 0,0,floorwidth,floorwidth,this);
repaint();
}
@Override
public void paintComponent(Graphics g){
super.paintComponent(g);
g.drawImage(chara, 0, 0, this);
}
public Migong(){
this.floor();
}
public static void main(String[] args) {
// TODO code application logic here
SWingConsole.run(new Jie_mian(), 250, 250);
}

}
AcHerat 2011-04-16
  • 打赏
  • 举报
回复
你的main呢?
dragonmuou 2011-04-16
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 pinefantasy 的回复:]

引用 9 楼 dragonmuou 的回复:

引用 7 楼 pinefantasy 的回复:

引用 6 楼 dragonmuou 的回复:

引用 4 楼 pinefantasy 的回复:

//没有接触过java的AWT、SWING包,不是特别清楚背景细节,调试了看下,chara = createImage(250, 250);返回的是null,楼主可以看看底层的方法。
……
[/Quote]
是这个道理的。。。
pinefantasy 2011-04-16
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 dragonmuou 的回复:]

引用 7 楼 pinefantasy 的回复:

引用 6 楼 dragonmuou 的回复:

引用 4 楼 pinefantasy 的回复:

//没有接触过java的AWT、SWING包,不是特别清楚背景细节,调试了看下,chara = createImage(250, 250);返回的是null,楼主可以看看底层的方法。

public void floor() {
c……
[/Quote]
其实我也是新手,正在努力学习。我个人觉得:如果想以后往JAVA EE方向发展的话,先静下心,踏踏实实地把java基础打好(先找本基础入门教材,学完后再看看java编程思想、java核心技术之类的书),然后开始接触java框架(struts、spring、hibernate等开源框架),大致先熟悉开发的流程、通过一些小项目来提升自己的开发能力;再进一步就可以研究研究框架的思想、看一些底层代码、研究研究JAVA虚拟机等等。
//个人观点,你参考参考。
dragonmuou 2011-04-16
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 pinefantasy 的回复:]

引用 6 楼 dragonmuou 的回复:

引用 4 楼 pinefantasy 的回复:

//没有接触过java的AWT、SWING包,不是特别清楚背景细节,调试了看下,chara = createImage(250, 250);返回的是null,楼主可以看看底层的方法。

public void floor() {
chara = createImage(250, 250……
[/Quote]

那现在都用什么呢??能指挑明路
有点笨 2011-04-16
  • 打赏
  • 举报
回复

应该是某个变量没有开辟空间
at migong.Migong.floor(Migong.java:41)
at migong.Migong.<init>(Migong.java:55)
at migong.Jie_mian.<init>(Migong.java:27)
at migong.Migong.main(Migong.java:59)
按照提示的行号去看看哪个变量没有开辟空间
pinefantasy 2011-04-16
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 dragonmuou 的回复:]

引用 4 楼 pinefantasy 的回复:

//没有接触过java的AWT、SWING包,不是特别清楚背景细节,调试了看下,chara = createImage(250, 250);返回的是null,楼主可以看看底层的方法。

public void floor() {
chara = createImage(250, 250);

//此处报错了、空指向异常 //说明上一……
[/Quote]
按照这个代码提示:
public Image createImage(int width, int height) {
ComponentPeer peer = this.peer;
if (peer instanceof LightweightPeer) {
if (parent != null) { return parent.createImage(width, height); }
else { return null;}
} else {
return (peer != null) ? peer.createImage(width, height) : null;
}
}
//返回了null。估计是覆盖了父类的某个方法,但是没有初始化一些东西。
//不过还是别纠结这个问题了、现在基本都不用AWT SWING开发了。你那个方法能解决问题的话就先这样子嘛。
dragonmuou 2011-04-16
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 pinefantasy 的回复:]

//没有接触过java的AWT、SWING包,不是特别清楚背景细节,调试了看下,chara = createImage(250, 250);返回的是null,楼主可以看看底层的方法。

public void floor() {
chara = createImage(250, 250);

//此处报错了、空指向异常 //说明上一句返回的对象为null)
draw_chara = ……
[/Quote]

如果把chara = createImage(250,250);
draw_chara = chara.getGraphics();
floorwidth=floor.getWidth(this);
floorheigth = floor.getHeight(this);
for(int i=0;i<250;i+=floorwidth)
for(int j=0;j<250;j+=floorwidth)
draw_chara.drawImage(floor, j, i, j+floorwidth, i+floorwidth, 0,0,floorwidth,floorwidth,this);
加到 paintComponent中便可以运行。。。
dragonmuou 2011-04-16
  • 打赏
  • 举报
回复
嗯。。。但是我不知道怎么解决

62,623

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧