| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 930 人关注过本帖
标题:请教空指针异常。
只看楼主 加入收藏
飞跃无限
Rank: 1
等 级:新手上路
威 望:1
帖 子:180
专家分:0
注 册:2006-4-16
收藏
 问题点数:0 回复次数:4 
请教空指针异常。

import java.applet.*;
import java.awt.*;
public class ShowAnimator extends Applet //shows Exception
{
Image [] m_Images;
int totalImages=14;
int currentImage=0;
public void init()
{
m_Images=new Image[totalImages];
for(int i=0;i<totalImages;i++)
{
m_Images[i]=getImage(getCodeBase(),"images\\img00"+(i+1)+".gif");
}
}
public void start()
{
currentImage=0;
}
public void paint(Graphics g)
{
g.drawImage(m_Images[currentImage],50,50,this);
currentImage=++currentImage%totalImages;
try
{
Thread.sleep(50);
}
catch(Exception e)
{
}
repaint();
}
public static void main(String [] args)
{
Frame f=new Frame("DrawImages");
ShowAnimator s=new ShowAnimator();
f.add(s);
s.init();
f.setSize(200,100);
f.setVisible(true);
}
}

//<applet code="ShowAnimator.class" width=300 height=300>
//</applet>

错误提示如下:
D:\java\lesson6>java ShowAnimator
Exception in thread "main" java.lang.NullPointerException
at java.applet.Applet.getCodeBase(Unknown Source)
at ShowAnimator.init(ShowAnimator.java:13)
at ShowAnimator.main(ShowAnimator.java:38)

搜索更多相关主题的帖子: 指针 java import public 
2007-05-08 16:57
食恶不色
Rank: 2
等 级:新手上路
威 望:3
帖 子:632
专家分:5
注 册:2006-11-8
收藏
得分:0 
s.init();好像是默認調用的。。你在吧Applet好好看看,,

做人要厚道,看帖要回帖!回帖是尊重,回帖是美德! 美德要发扬,我们要顶帖!顶帖是好事,千万莫灌水!
2007-05-09 18:23
千里冰封
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:灌水之王
等 级:版主
威 望:155
帖 子:28477
专家分:59
注 册:2006-2-26
收藏
得分:0 
当然它所在的环境不是作为applet运行的时候就会抛出这个异常

你用运行applet的方法来运行它,就不会抛出异常了

可惜不是你,陪我到最后
2007-05-09 18:51
飞跃无限
Rank: 1
等 级:新手上路
威 望:1
帖 子:180
专家分:0
注 册:2006-4-16
收藏
得分:0 

问题解决了。

在Applet使用main()函数这个本身没有问题,这是一种编程技巧,使得这个程序既可以

在浏览器和appletviewer中执行,也可以使用java命令直接执行,问题出getCodeBase

( )这个方法,如果你使用appletVeiwer和浏览执行时,getCodeBase()可以正确的获取

Applet class所在的URL,如果你是做为一个独立的应用程序来执行的话,我个人认为

此时的Applet已不再是真正意义上的Applet,所以无法获取URL,当然这是值就会为

NULL,你使用一个为NUll的变量,发生空指针异常就再所难免了!!!


解决方法:

如果是作为一个独立应用程序加载本地图片:
Tookit tk = getTookit(); //这个方法是Applet从java.awt.component继承的,至于Tookit类自己看吧
m_Images[i]=tk.getImage(getClass( ).getResource("images\\img00"+(i+1)+".gif"));
这样应该就没有问题了

如果是作为一Applet来加载网上的图片:

可以使用getCodeBase()来获取了!!!

2007-05-10 12:09
千里冰封
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:灌水之王
等 级:版主
威 望:155
帖 子:28477
专家分:59
注 册:2006-2-26
收藏
得分:0 

呵呵,了解了APPLET的运行机制就可以理解了


可惜不是你,陪我到最后
2007-05-10 12:53
快速回复:请教空指针异常。
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.017887 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved