代码是:import java.awt.*;import java.awt.event.*;import javax.swing.*;public class LogoAnimator extends JPanel implements ActionListener{private final static String IMAGE_NAME="TOPS";//声明图像名protected ImageIcon images[]; //声明数组图像private int totalImages=13;//声明图片总数private int currentImage=0;//图片索引private int animationDelay=50;private int width;private int height;private Timer animationTimer;//声明计时器的对象//初始化载入图像public LogoAnimator(){ images=new ImageIcon[totalImages]; //加载图片 for(int count=0;count<images.length;++count) images[count]=new ImageIcon(getClass().getResource("images/"+IMAGE_NAME+count+".jpg")); //假设所有图片的大小相同 width=images[0].getIconWidth();/* heigth=images[0].getIconHeight();*/}//显示当前图片public void paintComponent(Graphics g){super.paintComponent(g);images[currentImage].paintIcon(this,g,0,0);//移动到下一个图像只有定时器运行if(animationTimer.isRunning())currentImage=(currentImage+1)% totalImages;}//响应定时器事件public void actionPerformed(ActionEvent actionEvent){repaint();//重绘动画}//启动或重启动动画public void startAnimation(){ if(animationTimer==null){ currentImage=0; animationTimer=new Timer(animationDelay,this); animationTimer.start(); } else //继续从上一个图像显示 if(!animationTimer.isRunning()) animationTimer.restart();}//停止动画public void stopAnimator(){ animationTimer.stop(); }//返回最小尺寸的动画public Dimension getMinimumSize(){return new Dimension(width,height);}//在框架中执行动画public static void main(String args[]){ LogoAnimator animation=new LogoAnimator();//实现动画 JFrame window=new JFrame("可可可乐广告"); window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); Container container=window.getContentPane(); container.add(animation); window.pack(); window.setVisible(true); animation.startAnimation(); }}错误:exception in thread "main"java.lang.NullPointerExceptionat javax.swing.ImageIcon.<init><ImageIcon.java:138>at LogoAnimator.<init><LogoAnimator.java:19>at LogoAnimator.main<LogoAnimator.java:57>
- -! 多谢抬举啊 ImageIcon的构造函数抛出空值针异常 那就是说 getClass().getResource('..') 未能找到图片呗 十有八九你是用myeclipse运行的 eclipse的运行目录是项目的根目录 也就是说你的 images/目录 应该在项目的根目录下 而不是在 src目录下 还是建议你们不要过早的使用 eclipse netbean 之类的东西 字符行更适合初学 或者Ant Maven 这样你才能更了解 java环境 其实就构建和工程化来说 Ant 和 Maven 比 eclipse好用得多=========建议你把这个字符串先打印出来看一下 "images/"+IMAGE_NAME+count+".jpg"
包没问题,问题在: 19 到 20 行 new ImageIcon(getClass().getResource("images/"+IMAGE_NAME+count+".jpg")); 没有成功。看看路经之类有没有写错。