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


Partners & Affiliates











advertisement

Ticker Tape


/*
Ticker Tape 1.0

Copyright (c) 2000 By Goodwin Software

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 or the Licenses, or (at your
option) any later version.

This program is distrubuted in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABLITY
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.

For any questions or comments regarding this program, please e-mail
us a support@goodwinsoftware.com.
*/

import java.awt.*;
import java.applet.*;
import java.awt.image.*;

public class TickerTape extends Applet implements Runnable {
  Image winScratch;
  Graphics gScratch;
  Thread runner;
  String tickerline, displaystring;
  Color outerborder = new Color(0xCCCCCC);
  Color middleborder = new Color(0x000000);
  Color innerborder = new Color(0xCCCCCC);
  Color textcolor = new Color(0x00FF00);
  Color textbackground = new Color(0x000000);
  boolean isRunning = false;
  int fmh, mchars, delay = 200, cnt;
  FontMetrics fm;

  public void init() {
    int i;
    String s;

    Font f = new Font("Helvetica", Font.PLAIN, 12);
    fm = getFontMetrics(f);
    fmh = fm.getHeight();
    mchars = getSize().width - 26;
    winScratch = createImage(getSize().width, getSize().height);
    gScratch = winScratch.getGraphics();
    setBackground(Color.white);
    s = getParameter("delay");
    if (s != null)
      delay = Integer.parseInt(s);
    s = getParameter("outborder");
    if (s != null)
      outerborder = new Color(Integer.parseInt(s, 16));
    s = getParameter("middleborder");
    if (s != null)
      middleborder = new Color(Integer.parseInt(s, 16));
    s = getParameter("innerborder");
    if (s != null)
      innerborder = new Color(Integer.parseInt(s, 16));
    s = getParameter("textcolor");
    if (s != null)
      textcolor = new Color(Integer.parseInt(s, 16));
    s = getParameter("textbackground");
    if (s != null)
      textbackground = new Color(Integer.parseInt(s, 16));
    tickerline = getParameter("tickerline");
    displaystring = tickerline.substring(0, 1);
    cnt = 1;
  }

  public void start() {
    if (runner == null) {
      runner = new Thread(this);
      runner.start();
    }
  }

  public void stop() {
    runner = null;
  }

  public void run() {
    Thread thisThread = Thread.currentThread();

    while (runner == thisThread) {
      repaint();
      if (isRunning) {
        if (cnt == tickerline.length())
          displaystring += " ";
        else {
          displaystring += tickerline.substring(cnt, cnt + 1);
          cnt++;
        }
      }
      isRunning = true;
      try {
          Thread.sleep(delay);
      } catch(InterruptedException e) {}
    }
  }

  public void paint(Graphics g) {
    int w, h, i;
    String s;

    w = getSize().width;
    h = getSize().height;
    Font f = new Font("Helvetica", Font.PLAIN, 12);
    gScratch.setColor(outerborder);
    gScratch.drawRect(0, 0, w - 1, h - 1);
    gScratch.drawRect(1, 1, w - 3, h - 3);
    gScratch.setColor(middleborder);
    gScratch.drawRect(2, 2, w - 5, h - 5);
    gScratch.drawRect(3, 3, w - 7, h - 7);
    gScratch.setColor(innerborder);
    gScratch.drawRect(4, 4, w - 9, h - 9);
    gScratch.drawRect(5, 5, w - 11, h - 11);
    gScratch.setColor(textbackground);
    gScratch.fillRect(6, 6, w - 12, h - 12);
    gScratch.setFont(f);
    gScratch.setColor(textcolor);
    while (fm.stringWidth(displaystring) > getSize().width - 26)
      displaystring = displaystring.substring(1, displaystring.length());
    gScratch.drawString(displaystring, getSize().width - 13 - fm.stringWidth(displaystring), fmh + 8);
    g.drawImage(winScratch, 0, 0, this);
    s = displaystring.trim();
    if (s.equals("")) {
        displaystring = "";
        cnt = 0;
    }
  }

  public final void update(Graphics g) {
    paint(g);
  }

}
Back to Ticker Tape

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%.

Alfresco's Latest ECM: Prying Open a Sector?
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

Getting Started with TBB on Windows
Moving to VoIP: Should You Go It Alone?
Introduction to the WPF Command Framework
7.0, Microsoft's Lucky Version?
Will Hyper-V Make VMware This Decade's Netscape?
Eliminate Fragmentation Frustration with Netbiscuits
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")

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: Will Hyper-V Make VMware This Decade's Netscape?
Microsoft Article: 7.0, Microsoft's Lucky Version?
Microsoft Article: Hyper-V--The Killer Feature in Windows Server 2008
Avaya Article: How to Feed Data into the Avaya Event Processor
Microsoft Article: Install What You Need with Windows Server 2008
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