201 applets, Demo 2: Blinkender Text

Wegen geänderter Sicherheitseinstellungen kann dieses Applet aktuell nicht ausgeführt werden. Man studiere den Quellcode.



Beim Aufruf von applets ist unbedingt auf die case-sensitive Schreibweise des applet-Dateinamens zu achten!

Dieses applet wird im Body des Quelltext dieses HTML-Dokuments wie folgt aufgerufen:

                
                .....
                <applet code="Blink.class" width="80%" height="90">
                        <param name="lbl"
                               value="Dieses applet 'Blink.class' stellt farbig blinkenden Text dar.
                                   Der Quellcode dazu: 'Blink.java'. Das applet bekommt vom HTML-Dokument
                                   zwei Parameter übergeben, mit 'lbl' den darzustellenden Text und
                                   mit 'speed' die Blinkfrequenz.">
                        <param name="speed"
                               value="9">
                </applet>
                .....
                
                

Der Quellcode von "Blink.java" (von Arthur van Hoff, SUN Microsystems):


                
/* **************************************************************************************** */
/* Copyright (c) 1994-1995 Sun Microsystems, Inc. All Rights Reserved.
 */

import java.awt.*;
import java.util.StringTokenizer;


/*
 * I love blinking things.
 *
 * @author Arthur van Hoff
 */
public class Blink extends java.applet.applet implements Runnable {
    Thread blinker;
    String lbl;
    font font;
    int speed;

    public void init() {
        font = new java.awt.font("TimesRoman", font.PLAIN, 24);
        String att = getParameter("speed");
        speed = (att == null) ? 400 : (1000 / Integer.valueOf(att).intValue());
        att = getParameter("lbl");
        lbl = (att == null) ? "Blink" : att;
    }

    public void paint(Graphics g) {
        int x = 0, y = font.getSize(), space;
        int red = (int)(Math.random() * 50);
        int green = (int)(Math.random() * 50);
        int blue = (int)(Math.random() * 256);
        Dimension d = size();

        g.setColor(Color.black);
        g.setfont(font);
        fontMetrics fm = g.getfontMetrics();
        space = fm.stringWidth(" ");
        for (StringTokenizer t = new StringTokenizer(lbl) ; t.hasMoreTokens() ; ) {
            String word = t.nextToken();
            int w = fm.stringWidth(word) + space;
            if (x + w > d.width) {
                x = 0;
                y += font.getSize();
            }
            if (Math.random() < 0.5) {
                g.setColor(new java.awt.Color((red + y * 30) % 256, (green + x / 3) % 256, blue));
            } else {
                g.setColor(Color.lightGray);
            }
            g.drawString(word, x, y);
            x += w;
        }
    }

    public void start() {
        blinker = new Thread(this);
        blinker.start();
    }
    public void stop() {
        blinker.stop();
    }
    public void run() {
        while (true) {
        try {Thread.currentThread().sleep(speed);} catch (InterruptedException e){}
            repaint();
        }
    }
}
/* **************************************************************************************** */
   
   

Zurück zur Startseite