import java.awt.*; import java.awt.event.*; import javax.swing.*; public class Trafico extends JPanel implements KeyListener { boolean Corriendo = false; // EstA corriendo el hilo? Anima_Num NUMERO[] = new Anima_Num[4]; int x_a, x_n, y; // x_anterior, x_nueva, y String NUM = ""; public Trafico() { addKeyListener(this); Thread.currentThread().setPriority(Thread.MAX_PRIORITY); } public synchronized void paint(Graphics G) { if (!Corriendo) { G.setColor(Color.black); G.fillRect(0, 0, 570, 310); G.setColor(Color.yellow); PintaManzanas(G); } else { G.setColor(Color.black); G.drawString(NUM, x_a, y); G.setColor(Color.yellow); G.drawString(NUM, x_n, y); } } public void update(Graphics G) { paint(G); } void PintaManzanas(Graphics G) { int w = 40, h = 30; // w = width, h= hight int x = 10, y = 10; for (int R = 0; R < 5; R++) { x = 10; for (int C = 0; C < 8; C++) { G.drawRect(x, y, w, h); x += 70; } y += 60; } } public void Imprime(int x_a, int x_n, int y, String NUM) { this.x_a = x_a; this.x_n = x_n; this.y = y; this.NUM = NUM; repaint(); } public void keyTyped(KeyEvent e) {} // No me interesa public void keyPressed(KeyEvent e){} // No me interesa public void keyReleased(KeyEvent e) { System.out.println(e.getKeyText(e.getKeyCode())); String Tecla = e.getKeyText(e.getKeyCode()); int Numeros = 0; if (Tecla.equals("F1") || Tecla.equals("F2") || Tecla.equals("F3") || Tecla.equals("F4")) { if (!Corriendo) { Corriendo = true; Numeros = e.getKeyCode() - 111; // N nUmeros y = 60; for (int n = 0; n < Numeros; n++) { NUMERO[n] = new Anima_Num(y, n+1, this, (n + 1) * 200); new Thread(NUMERO[n]).start(); y += 60; } } } else if (Tecla.equals("Introduzca")) { } } } class Anima_Num extends Thread { int x_a, x_n, y, SLEEP; String NUM = ""; Trafico TRAFICO; public Anima_Num(int y, int numero, Trafico TRAFICO, int SLEEP) { this.y = y; this.NUM = "" + numero; this.TRAFICO = TRAFICO; this.SLEEP = SLEEP; } public void run( ) { while(true) { try { Thread.sleep(50); } catch(InterruptedException r){} x_n = (x_n == 570) ? 0 : x_n+10; TRAFICO.Imprime(x_a, x_n, y, NUM); x_a = x_n; } } }