import java.awt.*; import java.applet.*; import javax.swing.*; public class Uppg1e extends JApplet implements Runnable{ private TextYta ty; private Thread hoppText; public void init(){ setBackground(new Color(20, 20, 0)); this.setSize(640, 180); ty = new TextYta("Solen stiger över AIK!"); this.getContentPane().add(ty,"Center"); }//init public void run(){ while(hoppText !=null){ try{ Thread.sleep(200); // antal millisek att sova } catch(InterruptedException e){ System.out.println("not working!"); } repaint(); }//while }//run public void start() { if (hoppText == null) { hoppText = new Thread(this); hoppText.start(); } } //OBS detta är appletens stop() INTE trådens OBS public void stop(){ hoppText = null; //Stoppar loopen i metoden run }//stop }//Uppg1e //Rita upp texten och slumpa ut värden för x & y positioner! class TextYta extends JPanel{ private Font minFont; private FontMetrics fm; private Dimension dim; private int x, y; private final static int SFAKTOR = 10; private int [] Positions; private char [] chars; private String text; public TextYta(String text){ super(); this.setSize(640, 380); this.text = text; Positions = new int [text.length()]; chars = text.toCharArray(); setBackground(new Color(20, 20, 0)); minFont = new Font("Helvetica", java.awt.Font.BOLD, 52); }//TextYta public void paintComponent(Graphics g){ super.paintComponent(g); g.setColor(new Color(208, 208, 0)); g.setFont(minFont); fm = g.getFontMetrics(minFont); dim = getSize(); int sWidth = fm.stringWidth(text); int sHeight = fm.getHeight(); x = (dim.width/3) - (sWidth/4); y = (dim.height/4) - (sHeight/3); for(int i = 0; i < text.length(); i++) Positions[i] = fm.charsWidth(chars, 0 , i); for(int i = 0; i < text.length(); i++){ int xPosition = (int)(Math.random() * SFAKTOR) + x + Positions[i]; int yPosition = (int)(Math.random() * SFAKTOR) + y + fm.getAscent(); g.drawChars(chars, i ,1, xPosition, yPosition); } }//paintComponent }//TextYta