advertisement
javaboutique
Search Tips
Articles  |   Tutorials  |   Reviews  |   Tools  |   by Category  |   by Date  |   by Name  |   Submit  |   Source  |   Forums  |  
javaboutique
Browse DevX


Partners & Affiliates











advertisement

acNeilson


/* acNeilson.java  bugly@interserv.com March 1996
 *
 *                 Changed name from CrazyCounter.java to acNeilson.java
 *                 Improved readability (because I'm so Alden Bugly) maybe
 *
 *                 Note, number is not a parem
 *
 *                 Calling syntax that works for me is:
 *
 *   
 *           
 *           
 *           
 *           
 *           
 *           
 *   
 *
 *   Passing VALUE (priming the pump) doesn't seem to work.
 *
 *   Renamed Numbers.gif to acNeilson.gif and PSP'd it so the counter
 *   and my schtick are harmonious.
*/
/* CrazyCounter.java */
/* 
 * Copyright (C) 1996 Mark Boyns 
 *
 * CrazyCounter
 * 
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2 of the License, or
 * (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
 */

import java.applet.*;
import java.awt.*;
import java.net.*;

public class acNeilson extends java.applet.Applet implements Runnable
{
    Thread thread = null;
    MediaTracker tracker = null;
    Image numbers;
    int number_frames;
    int number_width;
    int number_height;
    int how_many;
    int delay;
    String value;
    boolean first = true;
    int state = 0;

    public void init ()
    {
	String param;
	
	tracker = new MediaTracker (this);

	try
	{
	    numbers = getImage(getCodeBase(),"../Images/acNeilson.gif");
	    tracker.addImage (numbers, 0);
	    
	    param = getParameter ("NUMBER_FRAMES");
	    number_frames = Integer.parseInt (param);
	    
	    param = getParameter ("NUMBER_WIDTH");
	    number_width = Integer.parseInt (param);
	    
	    param = getParameter ("NUMBER_HEIGHT");
	    number_height = Integer.parseInt (param);

	    param = getParameter ("HOW_MANY");
	    how_many = Integer.parseInt (param);

	    param = getParameter ("DELAY");
	    delay = Integer.parseInt (param);

	    value = getParameter ("VALUE");
	    if (value == null)
	    {
		value = String.valueOf ((long)(Math.random () * (long)(Math.pow (10, how_many))));
	    }
	}
	catch (Exception e)
	{
	    return;
	}

	resize ((how_many * number_width), number_height);

	thread = new Thread (this);
	thread.start ();
    }

    public void stop ()
    {
	if (thread != null)
	{
	    thread.stop ();
	    thread = null;
	}
    }

    public void run ()
    {
	tracker.checkAll (true);

	for (;;)
	{
	    repaint ();

	    try
	    {
		Thread.sleep (delay);
	    }
	    catch (Exception e)
	    {
	    }
	}
    }

    /* Handle mouse events. */
    public boolean mouseDown (Event e, int x, int y)
    {
	if (thread != null)
        {
            thread.stop ();
            thread = null;
        }
        else
        {
            thread = new Thread (this);
            thread.start ();
        }
	return true;
    }
    
    /* Handle keyboard events. */
    public boolean keyDown (Event e, int key)
    {
	switch (key)
	{
	case '+':		// faster
	    delay -= 100;
	    if (delay < 10)
	    {
		delay = 10;
	    }
	    break;

	case '-':		// slower
	    delay += 100;
	    break;

	case '0':
	    value = String.valueOf (0);
	    state = 0;
	    break;

	default:
	    value = String.valueOf ((long)(Math.random () * (long)(Math.pow (10, how_many))));
	    state = 0;
	    break;
	}
	
	return true;
    }

    /* Don't clear the screen; just call paint. */
    public void update (Graphics g)
    {
	paint (g);
    }

    /* Paint the screen. */
    public void paint (Graphics g)
    {
	int i;
	int digit;
	boolean scroll;
	
	if (tracker.checkAll () == false)
	{
	    g.setColor (Color.black);
	    g.fillRect (0, 0, (how_many * number_width), number_height);
	    return;
	}

	int zeros = how_many - value.length ();
	for (i = 0; i < zeros; i++)
	{
	    Graphics gc = g.create (i * number_width, 0, number_width, number_height);
	    gc.drawImage (numbers, 0, 0, this);
	    gc.dispose ();
	}

	scroll = true;
	
	for (i = value.length () - 1; i >= 0; i--)
	{
	    digit = value.charAt (i) - '0';
	    
	    Graphics gc = g.create ((zeros+i) * number_width, 0, number_width, number_height);

	    if (scroll)
	    {
		switch (state)
		{
		case 0:
		    if (digit == 0)
		    {
			gc.drawImage (numbers, 0, -((9 * number_height) + number_height/2), this);
		    }
		    gc.drawImage (numbers, 0, -((digit * number_height) - number_height/2), this);
		    break;

		case 1:
		    gc.drawImage (numbers, 0, -(digit * number_height), this);
		    break;

		case 2:
		    gc.drawImage (numbers, 0, -((digit * number_height) + number_height/2), this);
		    if (digit == 9)
		    {
			gc.drawImage (numbers, 0, -((0 * number_height) - number_height/2), this);
		    }
		    break;
		}
	    }
	    else
	    {
		gc.drawImage (numbers, 0, -(digit * number_height), this);
	    }
	    
	    gc.dispose ();

	    if (digit != 9)
	    {
		scroll = false;
	    }
	}

	if (state >= 2)
	{
	    state = 0;
	    long l = Long.parseLong (value);
	    l++;
	    value = String.valueOf (l);
	}
	state++;
    }
}

/*
Local variables:
eval: (progn (make-local-variable 'compile-command) (setq compile-command (concat "javac " buffer-file-name)))
End:
*/

How to Add Java Applets to Your Site

New on the Java Boutique:

New Review:

Time Management Made Easy with the Quartz Enterprise Job Scheduler
Why not just use the Java timer API? This open source scheduling API boasts simplicity, ease-of-integration, a well-rounded feature set, and it's free!

New Applet:

Reverse Complement
Reverse Complement is a simple applet that converts DNA or RNA sequences into three useful formats.

Elsewhere on internet.com:

WebDeveloper Java
Lots of Java information on webdeveloper.com

WDVL Java
Thorough Java resource at the Web Developer's Virtual Library.

ScriptSearch Java
Hundreds of free Java code files to download.

jGuru: Your View of the Java Universe
Customizable portal with online training, FAQs, regular news updates, and tutorials.

 DevX Skillbuilding from IBM developerWorks
 RIA Run Contest: Build Next-Gen Apps in Microsoft Silverlight 2
 Avaya DevConnect Center
 Intel Go Parallel Portal
 Internet.com eBook Library
 Microsoft RIA Development Center
 Destination .NET
XML error: not well-formed (invalid token) at line 53
advertisement
Receive Articles via our XML/RSS feed
Receive Articles via our XML/RSS feed

JavaBytes
Internet Cyclone
This powerful, easy-to-use, internet optimizer is for Windows 95, 98, ME, NT, 2000 and XP. It's designed to automatically optimize your Windows settings, boosting your Internet connection up to 200%.

SaaS Tool Offers Custom Database Development
Microsoft’s Automated Agent: Can We Talk?
Borland Finally Sells CodeGear
Red Hat Heads For The JON 2.0
Out with the Old, in with the New at JavaOne
Trolltech Expands WebKit Footprint
Oracle: Eating its Own Open Source Food
Big Money and Open Source May Not Compute
Open Source Embrace Gives Sun New Fans
NetBeans, OpenSolaris Also in Spotlight at JavaOne

Taming Trees: Building Branching Structures
Clean Up Function Syntax Mess with decltype
Sutter Speaks: The Future of Concurrency
INTEL SCAVENGER HUNT, LENOVO X300 AND APPLE IPOD TOUCH GIVEAWAY (the "Giveaway")
Comparing Multi-Core Processors for Server Virtualization
Intel® Desktop Business Computing Solutions
Intel: What Downturn?
Managing the Evolving Data Center
Implement Drag and Drop in Your Windows Forms Applications
Processing Linked Web Data with XSLT

Advertising Info  |   Member Services  |   Contact Us  |   Help  |   Feedback  |   Site Map  |   Network Map  |   About



JupiterOnlineMedia

internet.comearthweb.comDevx.commediabistro.comGraphics.com

Search:

Jupitermedia Corporation has two divisions: Jupiterimages and JupiterOnlineMedia

Jupitermedia Corporate Info


Legal Notices, Licensing, Reprints, & Permissions, Privacy Policy.

Advertise | Newsletters | Tech Jobs | Shopping | E-mail Offers

Solutions
Whitepapers and eBooks
Microsoft Article: HyperV-The Killer Feature in WinServer ‘08
Avaya Article: How to Feed Data into the Avaya Event Processor
Microsoft Article: Install What You Need with Win Server ‘08
HP eBook: Putting the Green into IT
Whitepaper: HP Integrated Citrix XenServer for HP ProLiant Servers
Intel Go Parallel Portal: Interview with C++ Guru Herb Sutter, Part 1
Intel Go Parallel Portal: Interview with C++ Guru Herb Sutter, Part 2--The Future of Concurrency
Avaya Article: Setting Up a SIP A/S Development Environment
IBM Article: How Cool Is Your Data Center?
Microsoft Article: Managing Virtual Machines with Microsoft System Center
HP eBook: Storage Networking , Part 1
Microsoft Article: Solving Data Center Complexity with Microsoft System Center Configuration Manager 2007
MORE WHITEPAPERS, EBOOKS, AND ARTICLES
Webcasts
Intel Video: Are Multi-core Processors Here to Stay?
On-Demand Webcast: Five Virtualization Trends to Watch
HP Video: Page Cost Calculator
Intel Video: APIs for Parallel Programming
HP Webcast: Storage Is Changing Fast - Be Ready or Be Left Behind
Microsoft Silverlight Video: Creating Fading Controls with Expression Design and Expression Blend 2
MORE WEBCASTS, PODCASTS, AND VIDEOS
Downloads and eKits
Sun Download: Solaris 8 Migration Assistant
Sybase Download: SQL Anywhere Developer Edition
Red Gate Download: SQL Backup Pro and free DBA Best Practices eBook
Red Gate Download: SQL Compare Pro 6
Iron Speed Designer Application Generator
MORE DOWNLOADS, EKITS, AND FREE TRIALS
Tutorials and Demos
How-to-Article: Preparing for Hyper-Threading Technology and Dual Core Technology
eTouch PDF: Conquering the Tyranny of E-Mail and Word Processors
IBM Article: Collaborating in the High-Performance Workplace
HP Demo: StorageWorks EVA4400
Intel Featured Algorhythm: Intel Threading Building Blocks--The Pipeline Class
Microsoft How-to Article: Get Going with Silverlight and Windows Live
MORE TUTORIALS, DEMOS AND STEP-BY-STEP GUIDES