Электронная библиотека книг Александра Фролова и Григория Фролова.
Shop2You.ru Создайте свой интернет-магазин
Библиотека
Братьев
Фроловых
[Назад]

Исходный текст программы Multi2.java

Оглавление

Назад

// ==========================================
// Multi2.java
//(C) Alexandr Frolov, 1998
// E-mail: frolov@glasnet.ru
// Web:    http://www.glasnet.ru/~frolov 
// ==========================================
import java.applet.Applet;
import java.awt.*;

public class Multi2 extends Applet
{
  Thread thrColor = null;
  Thread thrSize = null;
  int rColor, gColor, bColor;
  int nFontSize = 12;
  
  // ============================================
  // start
  // ============================================
  public void start()
  {
    if(thrColor == null)
    {
      thrColor = new SizeThread(this);
      thrColor.start();
    }
    
    if(thrSize == null)
    {
      thrSize = new ColorThread(this);
      thrSize.start();
    }
  }

  // ============================================
  // stop
  // ============================================
  public void stop()
  {
    if(thrColor != null)
    {
      thrColor.stop();
      thrColor = null;
    }
    
    if(thrSize != null)
    {
      thrSize.stop();
      thrSize = null;
    }
  }

  // ============================================
  // paint
  // ============================================
  public void paint(Graphics g)
  {
    String s;
    g.setColor(
      new Color(rColor, gColor, bColor));
    
    s = "(R, G, B) = (" + rColor + ", " + 
      gColor + ", " + bColor + ")";
      
    g.setFont(new Font("Courier", 
      Font.PLAIN, nFontSize));
      
    g.drawString(s, 10, 30);    
  }
  
  // ============================================
  // getAppletInfo
  // ============================================
  public String getAppletInfo()
  {
    return "Name: Multi2";
  }
}

// ============================================
// Class ColorThread
// ============================================
class ColorThread extends Thread
{
  Multi2 a = null;
  
  public ColorThread(Applet appl)
  {
    a = (Multi2)appl;
  }
  
  // ============================================
  // run
  // ============================================
  public void run()
  {
    while(true)
    {
      a.rColor = (int)(255 * Math.random());
      a.gColor = (int)(255 * Math.random());
      a.bColor = (int)(255 * Math.random());

      a.repaint();
      
      try
      {
	Thread.sleep(1000);
      }
      catch(InterruptedException ie)
      {
	stop();
      }	
    }
  }
}

// ============================================
// Class SizeThread
// ============================================
class SizeThread extends Thread
{
  Multi2 a = null;
  
  public SizeThread(Applet appl)
  {
    a = (Multi2)appl;
  }
  
  // ============================================
  // run
  // ============================================
  public void run()
  {
    boolean incr = true;
    while(true)
    {
      if(incr)
      {
        if(a.nFontSize < 30)
	  a.nFontSize++;
      	else
	  incr = false;
      }
      else
      {
        if(a.nFontSize > 12)
	  a.nFontSize--;
      	else
	  incr = true;
      }

      a.repaint();
      
      try
      {
	Thread.sleep(100);
      }
      catch(InterruptedException ie)
      {
	stop();
      }	
    }
  }
}

[Назад]