Java中repaint方法具体怎么用

在网上找到的关于repaint方法的介绍几乎都是出于一篇文章的....没有代码示例,其实还是对如何使用一知半解。

我现在想做一个逐帧显示的加载动画,但是使用了repaint之后并没有重绘....而是直接加载到了最后一张图片(一共15张,每一张命名都是Loadingn.jpg,n是一个整数)。请问大家这样写有什么问题?怎么解决这个问题?

LoadingPage.java

package com.company;

import javax.swing.*;

public class LoadingPage {
    LoadingPage(int width, int height) {

        //新建窗体
        JFrame frame = new JFrame("加载中...");
        //窗体初始化
        frame.setSize(width, height);//设定窗体宽和高
        frame.setLocationRelativeTo(null);//居中对齐
        frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);//退出后关闭JVM
        frame.setVisible(true);//设置为可见

        //创建15张图模拟一个动画效果
        ImageIcon[] loadingImages = new ImageIcon[15];

        System.out.println("正在加载");
        for (int i = 0; i < 15; i++) {
            loadingImages[i] = new ImageIcon("res\\Loading\\Loading" + i + ".jpg");
        }
        drawLoadingAnimation drawLoadingAnimation = new drawLoadingAnimation(loadingImages);
        frame.getContentPane().add(drawLoadingAnimation);
    }
}

drawLoadingAnimation.java
package com.company;

import javax.swing.*;
import java.awt.*;

public class drawLoadingAnimation extends JPanel {
    Image im;
    drawLoadingAnimation(ImageIcon[] im){
        this.setOpaque(true);
        for(int i=0;i<im.length;i++){
            this.im=im[i].getImage();
            repaint(1000,0,0,this.getWidth(),this.getHeight());
        }
    }

    @Override
    public void paint(Graphics g) {
        super.paint(g);
        g.drawImage(im,0,0,this.getWidth(),this.getHeight(),null);
    }
}

 

不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 以帮助更多的人 ^-^