/*************************************************/ /* Prof. Dr. Carsten Vogt */ /* FH Koeln, Fak. 07 / Nachrichtentechnik */ /* http://www.nt.fh-koeln.de/vogt */ /* */ /* Das Applet zeichnet eine Bewegtgrafik. */ /* Es basiert auf Swing. */ /*************************************************/ import java.awt.*; import java.awt.geom.*; import javax.swing.*; class SteuerThread extends Thread { /* Der Thread laeuft in einer Endlosschleife und ruft in bestimmten Intervallen die paint()-Methode des Applets auf. */ private JApplet a; /* Applet, dessen paint()-Methode aufgerufn werden soll */ /* Konstruktor mit Vorbesetzung des Attributs */ SteuerThread(JApplet a) { this.a = a; } /* Aktionen des Threads */ public void run() { try { for (;;) { sleep(1000); /* Aufrufintervall: 1000 Millisekunden */ a.repaint(); } } catch (InterruptedException E) { System.out.println("Thread terminiert"); } } } /* Applet mit Bewegtbildausgabe */ public class BewegtApplet extends JApplet { private boolean mundAuf = false; /* soll der Mund der Grafik offen sein? */ /* start() wird nach Erzeugung des Applets aufgerufen und startet einen SteuerThread, der dann in regelmaessigen Abstaenden die Grafikausgabe erneuert. */ public void start() { SteuerThread st = new SteuerThread(this); st.start(); } /* paint() erstellt die grafische Ausgabe mit entweder geoeffnetem oder geschlossenen Mund */ public void paint(Graphics g) { g.setColor(Color.red); g.fillRect(50,50,100,200); g.setColor(Color.blue); g.fillOval(0,0,200,80); g.setColor(Color.green); g.fillOval(70,100,20,20); g.fillOval(110,100,20,20); if (mundAuf) { g.setColor(Color.green); g.fillOval(75,150,50,20); g.setColor(Color.black); g.fillOval(75,105,10,10); g.fillOval(115,105,10,10); g.setFont(new Font("Roman",Font.BOLD,20)); g.drawString("Hello World!",170,150); mundAuf = false; /* Das naechste Mal: Mund zu! */ } else { g.setColor(Color.green); g.fillRect(75,150,50,5); g.setColor(Color.white); g.fillRect(170,150,80,20); mundAuf = true; /* Das naechste Mal: Mund auf! */ } } }