    01: import java.applet.*;
    02: import java.awt.*;
    03: import java.awt.event.*;
    04: import java.awt.font.*;
    05: import java.awt.geom.*;
    06: import javax.swing.*;
    07:
    08: public class BannerApplet extends Applet
    09: {
    10:    public void init()
    11:    {
    12:       message = getParameter("message");
    13:       String fontname = getParameter("fontname");
    14:       int fontsize = Integer.parseInt(getParameter("fontsize"));
    15:       delay = Integer.parseInt(getParameter("delay"));
    16:       font = new Font(fontname, Font.PLAIN, fontsize);
    17:       Graphics2D g2 = (Graphics2D) getGraphics();
    18:       FontRenderContext context = g2.getFontRenderContext();
    19:       bounds = font.getStringBounds(message, context);
    20:
    21:       timer = new Timer(delay, new
    22:          ActionListener()
    23:          {
    24:             public void actionPerformed(ActionEvent event)
    25:             {
    26:                start--;
    27:                if (start + bounds.getWidth() < 0)
    28:                   start = getWidth();
    29:                repaint();
    30:             }
    31:          });
    32:    }
    33:
    34:    public void start()
    35:    {
    36:       timer.start();
    37:    }
    38:
    39:    public void stop()
    40:    {
    41:       timer.stop();
    42:    }
    43:
    44:    public void paint(Graphics g)
    45:    {
    46:       g.setFont(font);
    47:       g.drawString(message, start, (int)-bounds.getY());
    48:    }
    49:
    50:    private Timer timer;
    51:    private int start;
    52:    private int delay;
    53:    private String message;
    54:    private Font font;
    55:    private Rectangle2D bounds;
    56: }