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

Мерцание текста
(flashingtext.java)

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


public class flashingtext extends Applet implements Runnable {

// Создаем класс , который будет потомком класса Applet и реализовывать
// интерфейс Runnable
 
 String text = "Welcome|To|Java|World !";

// Строка text - это тот текст который будет выводиться на экран 
// Конец строки в тексте обозначается символом '|'

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

 Thread motor;
 Color textColor; //В textColor храниться текущтй цвет текста
 Graphics gs;     //Графический контекст
 FontMetrics fm;  //В fm должны храниться свойства шрифта
 Dimension dim;   //Переменная должна содержать размер окна апплета
 int fontHeight;  //высота текста 
 String curString; //Текущая трока текста

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

 public void init () {

 dim = size (); //Запоминаем размер окна апплета
 gs = getGraphics(); //Получаем графический контекст окна апплета
 gs.setFont ( new Font ("Helvetica",Font.PLAIN,22) );
// Устанавливаем шрифт
 fm = gs.getFontMetrics(); //запоминаем метрику шрифта
 fontHeight = fm.getHeight(); //запоминаем высоту шрифта
 
 }
 

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

 public void start () {

 setBackground(Color.black); // Устанавливаем цвет фона
 textColor = Color.black;
 motor = new Thread (this); // Создаем объект класса Thread
 motor.start(); // Запускаем процесс , связанный с motor
 
 }

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


 public void stop () {
 
 motor.stop();

 }

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


 public void run () {

 while (true) { //Начало бесконечного цикла
  StringTokenizer st = new StringTokenizer(text,"|");

// Достаем из переменной text подстроки ,
// разделенные символом '|' до тех пор ,
// пока не достанем все ...

  while(st.hasMoreTokens()) {
// ... и помещаим в curString
  curString = st.nextToken();
  int i;

// В цикле идем от черного цвета к белому
// каждый раз увеличивая R,G и B составляющую цвета

  for ( i=0 ; i?255 ; i++ ) {
      textColor = new Color(i,i,i);
      paint(gs);
    try {
        Thread.sleep(1000/delay); // пытаемся остановиться на 1000/delay
                                  // милисекунд
    }   catch (InterruptedException e) {};

  }
    try {
        Thread.sleep(500); // пытаемся остановиться на 1/2 секунды
    }   catch (InterruptedException e) {};

// Теперь идем обратно 
// каждый раз уменьшая R,G и B составляющую цвета


  for ( i=255 ; i?0 ; i-- ) {
      textColor = new Color(i,i,i);
      paint(gs);
    try {
        Thread.sleep(1000/delay); // пытаемся остановиться на 1000/delay
                                  // милисекунд
    }   catch (InterruptedException e) {};

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

 public void paint (Graphics g) {

 g.setColor(textColor); // устанавливаем текущий цвет текста (см. run () )

// Центрируем выводимую строку по осям X и Y

 int x = ( dim.width - fm.stringWidth(curString))/2;
 int y = ( fm.getAscent() + (dim.height - (fm.getAscent() +fm.getDescent()))/2);

 g.drawString(curString,x,y); // Рисуем curString на экране
 
 }

 public void update (Graphics g) {

 paint (g);

 }

}


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