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);
}
}
}

