StaticGenerator.java Source code

Java tutorial

Introduction

Here is the source code for StaticGenerator.java

Source

import java.awt.Graphics;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.awt.image.BufferedImage;
import java.awt.image.ColorModel;
import java.awt.image.DataBuffer;
import java.awt.image.DataBufferByte;
import java.awt.image.IndexColorModel;
import java.awt.image.Raster;
import java.awt.image.WritableRaster;
import java.util.Random;

import javax.swing.JComponent;
import javax.swing.JFrame;

public class StaticGenerator extends JComponent implements Runnable {
    byte[] data;

    BufferedImage image;

    Random random;

    public void initialize() {
        int w = getSize().width, h = getSize().height;
        int length = ((w + 7) * h) / 8;
        data = new byte[length];
        DataBuffer db = new DataBufferByte(data, length);
        WritableRaster wr = Raster.createPackedRaster(db, w, h, 1, null);
        ColorModel cm = new IndexColorModel(1, 2, new byte[] { (byte) 0, (byte) 255 },
                new byte[] { (byte) 0, (byte) 255 }, new byte[] { (byte) 0, (byte) 255 });
        image = new BufferedImage(cm, wr, false, null);
        random = new Random();
        new Thread(this).start();
    }

    public void run() {
        while (true) {
            random.nextBytes(data);
            repaint();
            try {
                Thread.sleep(1000 / 24);
            } catch (InterruptedException e) { /* die */
            }
        }
    }

    public void paint(Graphics g) {
        if (image == null)
            initialize();
        g.drawImage(image, 0, 0, this);
    }

    public static void main(String[] args) {
        JFrame f = new JFrame();
        f.add(new StaticGenerator());
        f.setSize(300, 300);
        f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        f.setVisible(true);
    }
}