Примеры программирования на Java

Табло
(Tablo.java)

Описание апплета
Пример работы апплета
import java.applet.*;
import java.awt.*;
import java.awt.image.*;

public class  Tablo extends Applet  // Создание класса
	
	{
	
	 Dimension d; // Переменная под размеры апплета
	 Image img;   // Исходная картинка
	 int ImgWidth; //Размеры исходной 
	 int ImgHeigth;//картинки
	 int pixels[]; // Массив под пикселы картинки
	 int Red[];    // Вспомогательные массивы
	 int Green[];  // для хранения каждого из компонентов  
	 int Blue[];   // цвета пикселов
	 int w, h;     
	 String Pict = "test.jpg"; // картинка по умолчанию
	 Color bgColor;	    // Цвет фона
	 
	 
	public void init()
	{ 
	 String param;

	//Если параметр задан
	 param = getParameter("img");
	      if (param != null)
		Pict = param;
	// А если параметр отсутствует то берется test.jpg	
	 d = size();
	 w = d.width;
	 h = d.height;
	
	 // Установка цвета фона
	 bgColor = new Color(0, 0, 0);
 	 setBackground(bgColor);
	
	 try 
	 {
	  img = getImage(getDocumentBase(), Pict);
	  MediaTracker t = new MediaTracker(this);
	  t.addImage (img, 0);
	  t.waitForID(0);
	
	// Определение размеров картинки
	  ImgWidth = img.getWidth(null);
	  ImgHeigth = img.getHeight(null);
	// Инициализация массивов
	  pixels = new int[ImgWidth * ImgHeigth];
	  Red   = new int[ImgWidth * ImgHeigth];
	  Green = new int[ImgWidth * ImgHeigth];
	  Blue  = new int[ImgWidth * ImgHeigth];
	
	// Класс   PixelGrabber определен в пакете java.lang.image.
	// Он формирует массив пикселей для существующего изображения
	// Сначала создается большой целочисленный массив для хранения данных
	// (здесь это pixels). Потом экземпляр класса PixelGrabber (здесь pg).
	// И, наконец,  для этого экземпляра вызывается  grabPixels().
	  PixelGrabber pg = new PixelGrabber(img, 0, 0, ImgWidth, ImgHeigth, pixels, 0, ImgWidth);
	  pg.grabPixels();
	// Задается само изображение img, координаты, от которых идет расчет 0, 0;
	// ширина и высота нужной области   ImgWidth, ImgHeigth;
	// массив для хранения пикселов pixels, смещение 0; и ширина строки ImgWidth,
	 
	 }
	 catch (InterruptedException e)
	   {
	   };
	   for (int i = 0; i < ImgWidth*ImgHeigth; i++)
	  {
	  // Заполнение массивов цветов пикселей
	   
	   Red[i] = 0xff & (pixels[i] >> 16);
	   Green[i] = 0xff & (pixels[i] >> 8);
	   Blue[i] = 0xff & (pixels[i]);
	  }
	   } 
	  
	  public void update()
	   {
	   }
	  
	  public void paint(Graphics g)
	    {
	  // Координата первой лампочки
	  int y = 2;
	  int x = 2;  
	  
	  for (int i = 0; i < ImgWidth*ImgHeigth; i++)
	  {
	  // Установка цвета очередного круга(лампочки) и ее прорисовка
	   g.setColor( new Color(Red[i],Green[i],Blue[i]));
	   g.fillOval(x, y, 4, 4);
	   x += 4;
	   if (x > w) // переход на новую строку
	   {
	    x = 2;
	    y += 4;
	   }
	  	
	    }
	  }
	   
	}