Código:
import java.awt.*; import java.util.*; import java.applet.Applet; import java.io.*; public class TransaApplet extends Applet { int NParada=10; Parada parada[]=new Parada[10]; Random aleatorio=new Random(); TransaPanel p1; public void init() { //Iniciamos las Paradas parada[0]=new Parada(20,20,30,10); parada[1]=new Parada(20,20,30,10); parada[2]=new Parada(20,20,30,10); parada[3]=new Parada(20,20,30,10); parada[4]=new Parada(20,20,30,10); parada[5]=new Parada(20,20,30,10); parada[6]=new Parada(20,20,30,10); parada[7]=new Parada(20,20,30,10); parada[8]=new Parada(20,20,30,10); parada[9]=new Parada(20,20,30,10); //Fin Inicio Parada p1=new TransaPanel(this); add("Center",p1); new DibujoThread(p1).start(); } } class DibujoThread extends Thread{ TransaPanel transa; public DibujoThread(TransaPanel tran){ transa=tran; setPriority(1); } public void run(){ do { transa.repaint(); }while(true); } } class bus { //Parametros para el dibujo del bus int x0,y0; Color color; //Constructor public bus(int x0,int y0){ this.x0=x0; this.y0=y0; //Color del bus color=Color.red; } //Metodo de Dibujo Semaforo public void dibujoBus(Graphics g){ g.setColor(color); g.fillOval(x0,y0,20,20); g.setColor(Color.black); g.drawOval(x0,y0,20,20); } } class Parada{ int x0,y0,ancho,alto; //Constructor public Parada(int x0,int y0,int ancho,int alto){ this.x0=x0; this.y0=y0; this.ancho=ancho; this.alto=alto; } //Dibujar Parada public void dibujoParada(Graphics g){ //Parada ubicada en zona superior if(ancho>alto) { g.drawRect(x0,y0,ancho,alto); } else { g.drawRect(x0,y0,alto,ancho); } } public void paint(Graphics g){ dibujoParada(g); } } class Trayectoria{ bus oruga; int pasajeros,numbus,velocidad; //Constructor Trayectoria public Trayectoria(int x0,int y0,int numbus,int velocidad,int pasajeros){ oruga=new bus(x0,y0); this.numbus=numbus; this.velocidad=velocidad; this.pasajeros=pasajeros; } } class TransaPanel extends Panel{ TransaApplet ia; //Variables para dibujo fuera de pantalla Dimension offDimension; Image OffImage; Graphics OffGraphico; Font fuente_transa,font_subtitle; //Constructor de la clase public TransaPanel(TransaApplet ia){ this.ia=ia; } //Creacion de las imagenes public void update(Graphics g){ Dimension dim=size(); //Verificamos si existen datos o no if((OffGraphico==null) || (dim.width!=offDimension.width) || (dim.height!=offDimension.height)){ offDimension=dim; OffImage=createImage(dim.width,dim.height); OffGraphico=OffImage.getGraphics(); } //Borramos datos anteriores OffGraphico.setColor(getBackground()); OffGraphico.fillRect(0,0,dim.width,dim.height); OffGraphico.setColor(Color.black); //Dibujamos Transa fuera de pantalla dibujoTransa(OffGraphico); //Enviamos el dibujo a pantalla g.drawImage(OffImage,0,0,null); } //Metodo Basico de Dibujo public void paint(Graphics g){ update(g); } //Dibujamos Transantiago public void dibujoTransa(Graphics g){ Color colorantiguo; /*Dibujamos El Fondo*/ fuente_transa=new Font("Geneva",1,18); font_subtitle=new Font("Arial",1,12); //dibuja el fondo //Dibujamos Cabeceras g.setFont(fuente_transa); //g.drawImage(Logo01,5,5,this); g.drawString("Monitor de Flujo Vehicular",200,80); //Fin Dibujo Cabeceras //Dibujo Circuito g.drawOval(300,120,500,500); //Fin Circuito //Dibujo Combo Detalle Seleccion g.setFont(font_subtitle); g.drawString("Detalle Seleccion",20,132); g.drawRoundRect(10,120,200,400,2,2); //Fin Dibujo Combo Detalle Seleccion //Dibujo de Linea de Cierre g.drawLine(0,700,700,700); //Fin Dibujo Linea de Cierre /*Fin Dibujo Fondo*/ for (int i=0;i<ia.NParada;i++){ ia.parada[i].dibujoParada(g); } } }