//Importieren vordefinierter Klassenbibliotheken aus Java
import java.applet.*;
import java.awt.*;
import java.util.Random;
/*
 *
 * SmallTicker
 *
 */
 /* 
 * Name der Klasse wird festgelegt; extends legt fest, dass sämtliche 
 * Eigenschaften von Applet übernommen werden sollen 
 * Runnable wird impletiert, dadurch können Threads verwendet werden
 */
public class SmallTicker extends Applet implements Runnable
  {	 
/* Die "Schubladen" (Variablen) x, y und width vom Typ Integer werden 
 * eingerichtet und mit den Werten 0 gefüllt.
 */
    int x = 0;
    int y = 0;
    int width = 0;	
    
/* Es wird ein Thread-Objekt namnes my_treat erstellt und mit dem Wert 
 * null gefüllt.
 */
    Thread my_thread = null;

/* Die Methode init ermittelt sowohl die Breite als auch die Höhe des Fensters 
 * Dies geschieht über die Funktion size. 
 */ 
  public void init()
      {
/* Die "Schublade" (Variable) x wird mit den Werten gefüllt, die die 
 * Fensterbreite festlegen
 */
        x = size().width;
/* Die "Schublade" (Variable) y wird mit den Werten gefüllt, die die 
 * Fensterhöhe festlegen
 */
        y = size().height / 2;
/* Der "Schublade" (Variable) width wird derselbe Wert wie die Variable x 
 * übergeben
 */
        width = x;
      }

/* Die Methode start wird aufgerufen. Ein neues thread-Objekt wird erzeugt, 
 * dass sich auf die Klasse SmallTicker bezieht. sobald die Methode start 
 * fertig ist, wird die Methode run aufgerufen
 */
    public void start()
      {
        my_thread = new Thread(this);
        my_thread.start();
	}
/* Die Methode run wird mit Hilfe einer while-Schleife aufgerufen. 
 * Diese ist eine Endlosschleife und veranlasst zusätzlich, dass der Text als
 * Lauftext ausgegeben wird. 
 */
    public void run()
      {
        while(true)
          {
/* Eine ständige Aktualisierung des Fensters wird durch die Funktion repaint 
 * erzeugt 
 */
            repaint();
/* Von dem Inhalt der "Schublade" (Variable) x wird der Wert 10 abgezogen */
            x -= 10;
/* Der Inhalt der "Schublade" (Variable) x wird, sobald ihr Inhalt kleiner als 
 * 0 ist, wieder in den Ausgangszustand(Inhalt der Variablen width) 
 * zurückgesetzt. Dies geschieht mit Hilfe einer if-Bedingung 
 * Mit Thread.sleep(100) wird der Thread erst nach 100 Milisekunden erneut 
 * aufgerufen, er pausiert zwischen zwei ausführungen also immer für 
 * 100 Milisekunden.
 */
            if(x <0) x=width; try {Thread.sleep(100); }
/* Sobald sleep wieder "erwacht" gibt sie eine Ausnahmebehandlung vom Typ 
 * InterruptException aus. 
 * Auf try folg catch, wodurch festgelegt wird, wie mit der Ausnahme verfahren
 * werden soll. In diesem Fall wird die Ausnahme aufgefangen und dann einfach 
 * ignoriert. 
 */
				catch(InterruptedException e) { } } } 

/* Aus der Gruppe Graphics wird ein Objekt, das alle Eigenschaften haben soll, 
 * die in der Bibliothek unter Graphics gesichert sind, definiert werden. Es 
 * erhält den Namen g 
 */	
public void paint(Graphics g) 
{ 

/* Es werden die Stringvariablen schriftart und text, und die Integer Variable 
 * schriftgroesse definiert. Ihnen wird kein Inhalt übergeben
 */
String schriftart;
String text;
int schriftgroesse;

/* Die String Variablen schriftgroesse wird mit dem Parameter aus der 
 * HTML-Datei gefüllt, während die Integer Variablen konvertiert werden
 */
schriftart     = getParameter("schriftart");
text           = getParameter("text");
schriftgroesse = Integer.parseInt(getParameter("schriftgroesse"));

/* Es werden die Integer Variablen br,bg,bb definiert.
 * Ihnen wird kein Inhalt übergeben
 */
int br;
int bg;
int bb;

/* Die String Variablen werden mit dem Parameter aus der HTML-Datei gefüllt
 * und in Integer Variablen konvertiert 
 */
br  = Integer.parseInt(getParameter("br"));
bg  = Integer.parseInt(getParameter("bg"));
bb  = Integer.parseInt(getParameter("bb"));

/* Es werden die Integer Variablen sr,sg,sb defniniert.
 * Ihnen wird kein Inhalt übergeben
 */
int sr;
int sg;
int sb;

/* Die String Variablen werden mit dem Parameter aus der HTML-Datei gefüllt
 * und in Integer Variablen konvertiert 
 */
sr  = Integer.parseInt(getParameter("sr"));
sg  = Integer.parseInt(getParameter("sg"));
sb  = Integer.parseInt(getParameter("sb"));

/* In einem neuen Objekt f (aus der Klasse Font) wird eine neue Schriftart 
 * definiert und dieses Objektf steht der gesamten Klasse zur Verfügung
 */
Font f  = new Font (schriftart,Font.BOLD,schriftgroesse);

/* Aus der HTML-Datei wird eine neue Farbe definiert und mit dem Namen 
 * b versehen
 */
Color b = new Color(br,bg,bb);
/* Aus der HTML-Datei wird eine neue Farbe definiert und mit dem Namen 
 * s versehen
 */
Color s = new Color(sr,sg,sb);    

/* Die Farbe des Hintergrundes wird durch die Farbe, die unter b definiert ist, 
 * festgelegt */
this.setBackground(b); 
/* Die Schriftart von g wird mit dem vorher definierten Objekt f angegeben */
g.setFont(f);
/* Die Schriftfarbe von g wird mit der vorher definierten Farbe s angegeben */
g.setColor(s);
/* Anweisung, dass die Buchstaben aus dem String text gezeichnet werden sollen 
 * und zwar in die Position, die mit dem Inhalt der Variabeln x und y angegeben 
 * wurde.
 */
g.drawString(text, x, y); }
} 