Main.java Source code

Java tutorial

Introduction

Here is the source code for Main.java

Source

import java.awt.Color;
import java.awt.GradientPaint;
import java.awt.Graphics2D;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.image.BufferedImage;

import javax.swing.ImageIcon;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.SwingUtilities;
import javax.swing.Timer;

public class Main {
    public static void main(String[] args) {
        Runnable r = new Runnable() {
            @Override
            public void run() {
                JPanel gui = new JPanel();

                final AnimatedImage[] tiles = new AnimatedImage[2];
                for (int ii = 0; ii < tiles.length; ii++) {
                    tiles[ii] = new AnimatedImage();
                    gui.add(new JLabel(new ImageIcon(tiles[ii])));
                }
                ActionListener listener = new ActionListener() {

                    @Override
                    public void actionPerformed(ActionEvent e) {
                        for (int i = 0; i < tiles.length; i++) {
                            tiles[i].paintImage();
                            gui.repaint();
                        }
                    }
                };
                Timer timer = new Timer(50, listener);
                timer.start();

                JOptionPane.showMessageDialog(null, gui);
                timer.stop();
            }
        };
        SwingUtilities.invokeLater(r);
    }
}

class AnimatedImage extends BufferedImage {
    GradientPaint[] frameGradient;
    int frame = 0;

    AnimatedImage() {
        super(60, 60, BufferedImage.TYPE_INT_RGB);
        frameGradient = new GradientPaint[6];
        for (int i = 0; i < frameGradient.length; i++) {
            frameGradient[i] = new GradientPaint(0f, (float) i, Color.BLUE, 0f, (float) i + 13, Color.RED, true);
        }
    }

    public void paintImage() {
        Graphics2D g = createGraphics();
        if (frame == frameGradient.length - 1)
            frame = 0;
        else
            frame++;
        g.setPaint(frameGradient[frame]);
        g.fillRect(0, 0, getWidth(), getHeight());
        g.dispose();
    }
}