// Program: scroller.java // Purpose: This program implements a scroller. // Author : Chunyen Liu // Date : 1998/12/21 // Note : All rights reserved by the author import java.awt.Graphics; import java.awt.Font; import java.awt.Color; import java.awt.Image; import java.applet.*; public class scroller extends Applet implements Runnable { // general setup Thread t = null; boolean suspended = false; Image oi; Graphics og; int x = 0, y = 0; int width = 0, height = 0; int sw, sh, sd; boolean initialized = false; // input params String message = "Hello! Welcome to my page!"; String font = "Helvetica"; int fontSize = 12; int step = 8, delay = 50; int backR = 0, backG = 255, backB = 0; int foreR = 255, foreG = 255, foreB = 255; public void init() { // get all params message = getParameter("message"); font = getParameter("font"); fontSize = Integer.parseInt(getParameter("fontsize")); step = Integer.parseInt(getParameter("step")); delay = Integer.parseInt(getParameter("delay")); backR = Integer.parseInt(getParameter("backgroundr")); backG = Integer.parseInt(getParameter("backgroundg")); backB = Integer.parseInt(getParameter("backgroundb")); foreR = Integer.parseInt(getParameter("foregroundr")); foreG = Integer.parseInt(getParameter("foregroundg")); foreB = Integer.parseInt(getParameter("foregroundb")); // set up applet size and double buffering width = size().width; height = size().height; resize(width, height); oi = createImage(width, height); og = oi.getGraphics(); } public void start() { if (t == null) { t = new Thread(this); t.start(); } } public void stop() { if (t != null && t.isAlive()) t.stop(); t = null; } public void run() { Thread.currentThread().setPriority(Thread.NORM_PRIORITY - 1); while (true) { repaint(); x -= step; if (x < -sw) x = width; try { Thread.sleep(delay); } catch (InterruptedException e) {} } } public void update(Graphics g) { paint(g); } public void paint(Graphics g) { og.setFont(new Font(font, Font.BOLD, fontSize)); og.setColor(new Color(backR, backG, backB)); og.fillRect(0, 0, width - 1, height -1); og.setColor(new Color(foreR, foreG, foreB)); og.drawRect(0, 0, width - 1, height -1); if (initialized == false) { sw = (og.getFontMetrics()).stringWidth(message); sh = (og.getFontMetrics()).getHeight(); sd = (og.getFontMetrics()).getDescent(); y = height - (height - sh) / 2 - sd; initialized = true; } og.setColor(Color.black); og.drawString(message, x + 1, y + 1); og.setColor(new Color(foreR, foreG, foreB)); og.drawString(message, x, y); g.drawImage(oi, 0, 0, this); } // use mouse to toggle animation public boolean mouseDown(java.awt.Event evt, int x, int y) { if (suspended) { t.resume(); } else { t.suspend(); } suspended = !suspended; return true; } }