/********************************************************************* logo.java Logo-banneri, jossa liikutetaan tekstiä. Appletti on esimerkki grafiikan kaksoispuskuroinnista ja säikeistä. Tekijä: Pekka Malmirae 2/1999 Muutoksia: Appletti päivitetty Java 1.1 -mukaiseksi: * size -> getSize * Säikeiden käsittelyssä päivitetty turvallisemmaksi (poistettu deadlock-vaarat) 11/1999, Pekka Malmirae *********************************************************************/ import java.applet.*; import java.awt.*; public class logo extends Applet implements Runnable { Thread saie = null; Image puskuriKuva; Graphics puskuri; String liukuTeksti; int tekstiX = 0; Image tausta; public void init() { MediaTracker tracker = new MediaTracker(this); tausta = getImage(getDocumentBase(), "tausta.jpg"); liukuTeksti = "Teknolit Oy"; tracker.addImage(tausta, 0); try { tracker.waitForID(0); } catch(Exception e) {}; puskuriKuva = createImage(getSize().width,getSize().height); puskuri = puskuriKuva.getGraphics(); puskuri.setFont(new Font("Arial", Font.BOLD, 38)); tekstiX = getSize().width + 20; } public void start() { saie = new Thread(this); saie.start(); } public void stop() { saie = null; } public void run() { Thread tamaSaie = Thread.currentThread(); while (true) { try { tekstiX -= 5; if (tekstiX <= -1 * (liukuTeksti.length() * 24)) tekstiX = getSize().width + 20; repaint(); tamaSaie.sleep(50); } catch (InterruptedException e) {} } } public void update(Graphics g) { if (tausta == null) return; puskuri.drawImage(tausta,0,0,this); puskuri.setColor(Color.black); puskuri.drawString(liukuTeksti,tekstiX,60); puskuri.setColor(Color.blue); puskuri.drawString(liukuTeksti,tekstiX-1,60-1); paint(g); } public void paint(Graphics g) { if (puskuriKuva!= null) g.drawImage(puskuriKuva, 0, 0, this); } }