如题,上面这样子的一张图,如何以动画的形式显示出来?想美化一下界面,查询数据库的时候显示一下。

解决方案 »

  1.   

    import java.awt.BorderLayout;
    import java.awt.Dimension;
    import java.awt.EventQueue;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.awt.image.BufferedImage;
    import java.io.IOException;
    import javax.imageio.ImageIO;
    import javax.swing.ImageIcon;
    import javax.swing.JFrame;
    import javax.swing.JLabel;
    import javax.swing.Timer;public class Rocks {
        public static void main(final java.lang.String[] args) {
            java.awt.EventQueue.invokeLater(new java.lang.Runnable(){
                    private int index = 0;
                    @Override public void run(){
                        try {
                            final BufferedImage source = ImageIO.read(Rocks.class.getResource("progress.png"));
                            final ImageIcon[] steps = new ImageIcon[32];                        for (int y = 0; y < 128; y += 32) {
                                for (int x = 0; x < 256; x +=32) {
                                    steps[index++] = new ImageIcon(source.getSubimage(x,y,32,32));
                                }
                            }
                            index = 0;
                            JFrame frame = new JFrame("Rocks");                        final JLabel status = new JLabel(steps[index]);
                            frame.add(status,BorderLayout.PAGE_END);
                            frame.setLocationRelativeTo(null);
                            frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                            frame.setPreferredSize(new Dimension(600,400));
                            frame.pack();
                            frame.setVisible(true);                        new Timer(50,new ActionListener(){
                                    @Override public void actionPerformed(ActionEvent e){
                                        status.setIcon(steps[(++index) % 31 + 1]);
                                    }
                                }).start();
                        } catch (IOException e) {
                            // It should not reach here
                        }
                    }
                });
        }
    }