要做一个程序的启动画面,这段程序有错误嘛?
运行时提示信息如下:
Uncaught error fetching image:
java.lang.NullPointerException
at sun.awt.image.URLImageSource.getConnection(URLImageSource.java:99)
at sun.awt.image.URLImageSource.getDecoder(URLImageSource.java:108)
at sun.awt.image.InputStreamImageSource.doFetch(InputStreamImageSource.java:248)
at sun.awt.image.ImageFetcher.fetchloop(ImageFetcher.java:172)
at sun.awt.image.ImageFetcher.run(ImageFetcher.java:136)
程序:
public class SpleshWindow extends JWindow {
private String statusStr =null;//信息窗口要显示的信息
private Image logoImg =null;//信息窗口中的显示图片
public SpleshWindow(JFrame owner) {//以JFrame对象为参数,可以是信息窗口和主窗口交互
super(owner);
//加载图片
logoImg=getToolkit().getImage( ClassLoader.getSystemResource("splesh.jpg"));
//this指的是什么
//等待图片加载完成
java.awt.MediaTracker tracker = new java.awt.MediaTracker(this);//创建一个MediaTracker对象
tracker.addImage(logoImg,0);//将图片放入MediaTracker对象中,序号是0
try{
tracker.waitForAll();
}catch(InterruptedException e){
e.printStackTrace();
}
//设置信息窗体在屏幕上的显示位置
setLocation(getToolkit().getScreenSize().width/2-logoImg.getWidth(this)/2,getToolkit().getScreenSize().height/2-logoImg.getHeight(this)/2);
setSize(logoImg.getWidth(this),logoImg.getHeight(this));//设置窗口大小
}
//设置显示信息的方法
public void setStatus(String status){
statusStr = status;
paint(getGraphics());//重画窗口来更新信息窗口中的显示信息
}
//重置Paint()方法来绘制图片和显示信息的方法
public void paint(Graphics g){
/**@ todo Override this java.awt.Component method
*/
super.paint(g);
//绘制图片
if(logoImg!=null)
g.drawImage(logoImg,0,0,this);
//绘制显示信息
if(statusStr!=null){
g.setColor(Color.red);
g.drawString(statusStr,240,getSize().height-250);
}
}
}