Back to "Animating Applets"

VMarquee Source

import java.applet.Applet;
import java.awt.*;

class VMarquee extends Applet implements Runnable
{

	Thread kicker;
	Image VBuffer;
	Graphics VContext;
	Font VFont = new Font("Times New Roman", 0, 24);
	String VText;
	int VPos;

	public void init() {
		VBuffer = createImage(size().width, size().height);
		VContext = VBuffer.getGraphics();
		VPos = size().height + 5;
		VText = getParameter("Text");
		if (VText == null) {
			VText = "THE LIBRARY OF WEB DESIGN PRESENTS - THE VERTICALLY SCROLLING MARQUEE";
		}
		VContext.setFont(VFont);
	}

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

	public void stop() {
		kicker = null;
	}

	public void run() {
		while(true) {
			VPos -= 5;
			if (VPos < (0 - VContext.getFontMetrics().getHeight() * VText.length())) {
				VPos = size().height + 5;
			}
			repaint();
			try {
				kicker.sleep(100);
			}
			catch(Exception e) {
				break;
			}
		}
	}

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

	public void paint(Graphics g) {
		String VChar;
		VContext.setColor(Color.white);
		VContext.fillRect(0, 0, size().width, size().height);
		VContext.setColor(Color.black);
		for (int p = 0; p < VText.length() ; p++) {
			VChar = VText.substring(p, p + 1);
			VContext.drawString(VChar, (size().width / 2) - (VContext.getFontMetrics().stringWidth(VChar) / 2), VPos + (p * VContext.getFontMetrics().getHeight()));
		}
		g.drawImage(VBuffer, 0, 0, this);
	}
}
Back to Top | Back to "Animating Applets"