home *** CD-ROM | disk | FTP | other *** search
/ Ultra Pack / UltraComputing Technology Demos and Tools.iso / java / demo / Blink / Blink.java < prev    next >
Encoding:
Java Source  |  1996-04-26  |  3.1 KB  |  95 lines

  1. /*
  2.  * Copyright (c) 1994-1996 Sun Microsystems, Inc. All Rights Reserved.
  3.  *
  4.  * Permission to use, copy, modify, and distribute this software
  5.  * and its documentation for NON-COMMERCIAL or COMMERCIAL purposes and
  6.  * without fee is hereby granted.
  7.  * Please refer to the file http://java.sun.com/copy_trademarks.html
  8.  * for further important copyright and trademark information and to
  9.  * http://java.sun.com/licensing.html for further important licensing
  10.  * information for the Java (tm) Technology.
  11.  *
  12.  * SUN MAKES NO REPRESENTATIONS OR WARRANTIES ABOUT THE SUITABILITY OF
  13.  * THE SOFTWARE, EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED
  14.  * TO THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
  15.  * PARTICULAR PURPOSE, OR NON-INFRINGEMENT. SUN SHALL NOT BE LIABLE FOR
  16.  * ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR
  17.  * DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES.
  18.  *
  19.  * THIS SOFTWARE IS NOT DESIGNED OR INTENDED FOR USE OR RESALE AS ON-LINE
  20.  * CONTROL EQUIPMENT IN HAZARDOUS ENVIRONMENTS REQUIRING FAIL-SAFE
  21.  * PERFORMANCE, SUCH AS IN THE OPERATION OF NUCLEAR FACILITIES, AIRCRAFT
  22.  * NAVIGATION OR COMMUNICATION SYSTEMS, AIR TRAFFIC CONTROL, DIRECT LIFE
  23.  * SUPPORT MACHINES, OR WEAPONS SYSTEMS, IN WHICH THE FAILURE OF THE
  24.  * SOFTWARE COULD LEAD DIRECTLY TO DEATH, PERSONAL INJURY, OR SEVERE
  25.  * PHYSICAL OR ENVIRONMENTAL DAMAGE ("HIGH RISK ACTIVITIES").  SUN
  26.  * SPECIFICALLY DISCLAIMS ANY EXPRESS OR IMPLIED WARRANTY OF FITNESS FOR
  27.  * HIGH RISK ACTIVITIES.
  28.  */ 
  29.  
  30. import java.awt.*;
  31. import java.util.StringTokenizer;
  32.  
  33. /**
  34.  * I love blinking things.
  35.  *
  36.  * @author Arthur van Hoff
  37.  * @modified 96/04/24 Jim Hagen : use getBackground
  38.  */
  39. public class Blink extends java.applet.Applet implements Runnable {
  40.     Thread blinker;
  41.     String lbl;
  42.     Font font;
  43.     int speed;
  44.  
  45.     public void init() {
  46.     font = new java.awt.Font("TimesRoman", Font.PLAIN, 24);
  47.     String att = getParameter("speed");
  48.     speed = (att == null) ? 400 : (1000 / Integer.valueOf(att).intValue());
  49.     att = getParameter("lbl");
  50.     lbl = (att == null) ? "Blink" : att;
  51.     }
  52.     
  53.     public void paint(Graphics g) {
  54.     int x = 0, y = font.getSize(), space;
  55.     int red = (int)(Math.random() * 50);
  56.     int green = (int)(Math.random() * 50);
  57.     int blue = (int)(Math.random() * 256);
  58.     Dimension d = size();
  59.  
  60.     g.setColor(Color.black);
  61.     g.setFont(font);
  62.     FontMetrics fm = g.getFontMetrics();
  63.     space = fm.stringWidth(" ");
  64.     for (StringTokenizer t = new StringTokenizer(lbl) ; t.hasMoreTokens() ; ) {
  65.         String word = t.nextToken();
  66.         int w = fm.stringWidth(word) + space;
  67.         if (x + w > d.width) {
  68.         x = 0;
  69.         y += font.getSize();
  70.         }
  71.         if (Math.random() < 0.5) {
  72.         g.setColor(new java.awt.Color((red + y * 30) % 256, (green + x / 3) % 256, blue));
  73.         } else {
  74.                 g.setColor(getBackground());
  75.         }
  76.         g.drawString(word, x, y);
  77.         x += w;
  78.     }
  79.     }
  80.  
  81.     public void start() {
  82.     blinker = new Thread(this);
  83.     blinker.start();
  84.     }
  85.     public void stop() {
  86.     blinker.stop();
  87.     }
  88.     public void run() {
  89.     while (true) {
  90.     try {Thread.currentThread().sleep(speed);} catch (InterruptedException e){}
  91.         repaint();
  92.     }
  93.     }
  94. }
  95.