Monday, February 1, 2010

Animasi Background

Animasi menjadi bagian penting pada sebuah program, sebagaimana perhiasan yang melekat pada seseorang. Contoh berikut diperlihatkan bagaimana membuat animasi background. Kelas ini dapat diaplikasikan pada JPanel, JFrame maupun JDialog serta kelas turunannya.

Berikut ini contoh menampilkan background secara acak.


package umar.faisol;

import java.util.Random;
import javax.swing.JPanel;
import java.awt.Color;

public class Pengacak extends Thread
{
    private JPanel background;

    public Pengacak(JPanel background)
    {
        this.background = background;
        start();
    }

    public void run()
    {
        while(true)
        {
            Random randomMerah = new Random();
            Random randomHijau = new Random();
            Random randomBiru = new Random();

            int merah = randomMerah.nextInt(256);
            int hijau = randomHijau.nextInt(256);
            int biru = randomBiru.nextInt(256);

            Color warna = new Color(merah, hijau, biru);
            background.setBackground(warna);

            try
            {
                sleep(10);
            }
            catch(InterruptedException i)
            {
                System.out.println(i);
            }
        }
    }
}
Cara menggunakannya adalah sebagai berikut:

package umar.faisol;

import javax.swing.JFrame;
import javax.swing.JPanel;

import java.awt.EventQueue;
import java.awt.BorderLayout;

public class Background extends JFrame implements Runnable
{
    public Background()
    {
        super("Animasi Background");
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }

    public void run()
    {
        JPanel panel = new JPanel();
        getContentPane().setLayout(new BorderLayout());
        getContentPane().add(panel, BorderLayout.CENTER);

        Pengacak pengacak = new Pengacak(panel);

        setSize(400, 300);
        setVisible(true);
    }

    public static void main(String args[])
    {
        JFrame.setDefaultLookAndFeelDecorated(true);
        EventQueue.invokeLater(new Background());
    }
}

Jika dijalankan program tersebut akan menampilkan warna panel yang berubah secara acak.

Source code lengkap dapat didownload di sini.