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

Часы
(Clock.java)

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

/*
  Clock - простая реализация цифровых часов.
*/
public class Clock extends Applet implements Runnable {
  Graphics g;
  Thread motor;
  Date date;
  Dimension d;
  
  /*
    В мктоде init происходит первичная инициализация аплета ( устанавливается
    необходимый шрифт для изображения времени, запоминаются размеры
    окна , устанавливается цвет фона.
  */
  public void init () {
    
    g = getGraphics();
    date = new Date();
    Font fn = new Font("Helvetica",Font.PLAIN,24);
    setFont(fn);
    d = this.size();
    setBackground(Color.white);
  }

  /*
    Создается объект класса Thread и запускается процесс , связанный с
    объектом motor
  */
  public void start () {
    if(motor == null)
      motor = new Thread(this);
      motor.start();
  }

  /*
    Выполнение программы приостанавливается
  */
  public void stop () {
    motor.stop();
    motor = null;
  }

  /*
    При запуске процесса , ассоциированного с объектом motor 
    устанавливается минимальный приоритет для процесса
    затем, программа входит в бесконечный цикл
    где считывается текущее время , окно перерисовывается и
    процесс вновь засыпает на 1 секунду
    После чего все повторяется
  */
  public void run() {
    motor.setPriority(Thread.MIN_PRIORITY);
    while( motor != null) 
    {
      date = new Date();
      repaint();
      try {
	Thread.sleep(1000);
      } catch (Exception e) {};
    }
  }

  /*
    В методе paint происходит перерисовка окна апплета
    Из объекта date вынимаются колличество часов, минут и секунд
    и помещаются в строку ss , разделенные символом ':'
    Затем строка центрируется по высоте и ширине окна и 
    выводится на экран
  */
  public void paint(Graphics g) {
    g.setColor(Color.black);
    FontMetrics fm = g.getFontMetrics();
    int hi = date.getHours();
    int mi = date.getMinutes();
    int si = date.getSeconds();
    String s,m,h;
    if(si<10)
      s="0"+si;
    else
      s=""+si;
    if(mi<10)
      m="0"+mi;
    else
      m=""+mi;
    if(hi<10)
      h="0"+hi;
    else
      h=""+hi;
    String ss = h+":"+m+":"+s;
    int x = (d.width - fm.stringWidth(ss))/2;
    int y = fm.getAscent() + ( d.height - (fm.getAscent() +
					      fm.getDescent()))/2;
    g.drawString(ss,x,y);
  }
}

 


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