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

Движущийся текст
(scrollingtext.java)

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


public class scrollingtext extends Applet implements Runnable {

// Создаем класс , который будет потомком класса Applet и реализовывать
// интерфейс Runnable
 
String text = "Java|Java Java|Java Java Java|Java Java Java Java|
Java Java Java|Java Java|Java";
// Строка text - это тот текст который будет выводиться на экран 
// Конец строки в тексте обозначается символом '|'

 int delay = 20;
// Переменная delay позврляет управлять задержкой в методе run , т.е.
// скоростью перемещения текста по экрану

 Thread motor;
 Image image;
// Переменная image будет хранить служебное изображение 

 Graphics gs;

 Graphics gi;
//Графический контекст , необходимый для того, чтобы можно было рисовать на
//изображении так же , как и на экране

 int shiftMax , shift;
 Dimension dim; // Переменная должна содержать размер окна апплета
 FontMetrics fm; // В fm должны храниться свойства шрифта



//******************************************************
//* Метод init ( первоначальная инициализация апплета )*
//******************************************************

 public void init () {

 setBackground(Color.white); //Устанавливаем цвет фона
 
 dim = size(); //Запоминаем размер окна апплета
 
 gs = getGraphics(); //Получаем графический контекст окна апплета
 
 image = createImage (dim.width, dim.height ); //Создаем служебное
					       //изображение ...
 gi = image.getGraphics(); //..и получаем графический контекст изображения

 gi.setFont (new Font("Helvetica",Font.PLAIN,20)); // Устанавливаем шрифт

 fm = gi.getFontMetrics (); // запоминаем метрику шрифта

 shiftMax = fm.getHeight(); // запоминаем высоту шрифта

 gi.setColor(Color.blue); // устанавливаем цвет чернил

 }

//**********************************************
//*Метод start ( инициализация объекта Thread )*
//**********************************************

 public void start () {

  motor = new Thread (this); // Создаем объект
  motor.start();

 }
 
//****************************************************
//*Метод stop ( служит для остановки работы апплета )*
//****************************************************

 public void stop () {

  motor.stop();
 }

//******************************
//*Метод run ( запуск апплета )*
//******************************

 public void run () {

 motor.setPriority(Thread.MIN_PRIORITY); // Устанавливаем приоритет для
					 // нашего процесса ( min )
					 // Это просто пример ,
					 // зачем нам больше
 while (true ) { // Начало бесконечного цикла
  String s;
  StringTokenizer st = new StringTokenizer(text,"|");
  while(st.hasMoreTokens())  { // Достаем из переменной text подстроки ,
			       // разделенные символом '|' до тех пор ,
			       // пока не достанем все 
   s = st.nextToken();
   shift = 0 ;
   int x = ( dim.width - fm.stringWidth(s))/2; // Центрируем выводимую
					       // строку
   gi.drawString(s,x,dim.height-5); // и рисуем внизу изображения image
   while (shift < shiftMax ) { // Прокручиваем изображение, пока  внизу
			       // не освободится место для следующей
			       // строки 
    gi.copyArea(0,0,dim.width,dim.height,0,-1);
    paint(gs);                 // Перерисовка экрана
    shift++;
    try {
	Thread.sleep(1000/delay); // пытаемся остановиться на 1000/delay
				  // милисекунд
    }   catch (InterruptedException e) {};

   }
  } 
    // После того , как все строки выведены на экран , прокручиваем 
    // картинку до тех пор , пока весь текст не выйдет за экран,
    // и повторяем цикл заново

  shift=shiftMax;
  while(shift<=dim.height) {
   gi.copyArea(0,0,dim.width,dim.height,0,-1);
   paint(gs);
   shift++;
   try {
        Thread.sleep(1000/delay);
   }    catch (InterruptedException e) {};

  }
 }
 }

//***********************************
//Метод paint ( перерисовка экрана )*
//***********************************

 public void paint (Graphics g) {

 g.drawImage ( image, 0 , 0 ,Color.white , this );//Рисуем image на экране

 }  

 public void update (Graphics g) {
 
 paint(g);

 }

}


Вступление | Примеры | Вопросы
Sun Microsystems
JavaSoft