import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
 
//动画图标
 
/*dkplus专业搜集和编写实用电脑软件教程,
*搜集各种软件资源和计算机周边,独立制作视频和ppt和音频微信公众号,
*点击进入 dkplus官方博客 (java网络编程http://dkplus.),
*微信搜索dkplus关注公众号可获取海量计算机周边资源。*/
 
public class AnimatorIcon extends JPanel implements ActionListener {
 
    ImageIcon[] images; //用于动画的图标数组
    Timer animationTimer; 
    int currentImage = 0; //当前图像编号
    int delay = 500;  //图像切换延迟
    int width; //图像宽度
    int height; //图像高度
 
    public AnimatorIcon() //构造函数
    {
        setBackground(Color.white);
        images = new ImageIcon[2]; //初始化数组
        for (int i=0;i<images.length;i++)
            images[i]=new ImageIcon(getClass().getResource("image"+i+".gif")); //实例化图标
        width = images[0].getIconWidth(); //初始化宽度值
        height = images[0].getIconHeight(); //初始化高度值
    }
 
    public void paintComponent(Graphics g) { //重载组件绘制方法
        super.paintComponent(g); //调用父类函数
        images[currentImage].paintIcon(this,g,70,0); //绘制图标
        currentImage=(currentImage+1)%2; //更改当前图像编号
    }
 
    public void actionPerformed(ActionEvent actionEvent) {
        repaint();
    }
 
    public void startAnimation() { //开始动画
        if (animationTimer==null) {
            currentImage=0; 
            animationTimer=new Timer(delay, this);  //实例化Timer对象
            animationTimer.start(); //开始运行
        } else if (!animationTimer.isRunning()) //如果没有运行
            animationTimer.restart(); //重新运行
    }
 
    public void stopAnimation() { 
        animationTimer.stop();  //停止动画
    }
 
    public static void main(String args[]) {
        AnimatorIcon animation = new AnimatorIcon(); //实例化动画图标
        JFrame frame = new JFrame("动画图标"); //实例化窗口对象
        frame.getContentPane().add(animation);  //增加组件到窗口上
        frame.setSize(200, 100); //设置窗口尺寸
        frame.setVisible(true); //设置窗口可视
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //关闭窗口时退出程序
        animation.startAnimation(); //开始动画
    }
 
}