/**ESTA CLASE HACE EL DIBUJO DEL DIAGRAMA DE GANTT PARA
* CADA ALGORITMO EJECUTADO*/
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.FlowLayout;
import java.awt.Font;
import java.awt.GridLayout;
import java.awt.LayoutManager;
import java.util.Vector;
import javax.swing.*;
public class DiagramaGantt extends JFrame{
Vector VectorProcesos=new Vector();/*el vector que va a contener todos los procesos creados*/
private JPanel PanelDiagrama=new JPanel();/*en este panel se dibujará el diagrama de gantt*/
private JPanel PanelTEP;/*en este panel se mostrará el Tiempo promedio de espera*/
private JLabel GanttBotones[];
private JLabel GanttEtiquetas[];
private GridLayout GridBotonesEtiquetas;
private double TiempEsperaPromedio;
/*CONSTRUCTOR*/
public DiagramaGantt(Vector VectorProcesos,String algoritmo){
this.setTitle("Diagrama de Gantt '"+algoritmo+"'");
this.VectorProcesos=VectorProcesos;
GanttBotones=new JLabel[(VectorProcesos.size()*2)+1];
GanttEtiquetas=new JLabel[(VectorProcesos.size()*2)+1];
PanelTEP=new JPanel();
PanelTEP.setLayout(new BorderLayout());
this.setLayout(new GridLayout(2,1,0,0));
}/*FIN DEL CONSTRUCTOR*/
/*ESTA FUNCION CREA EL DIAGRAMA DE GANTT PARA EL ALGORITMO SOLICITADO*/
public void crearDiagrama(int [] vectoraux,String [] ProcesosNombres1,double TEP){
GridBotonesEtiquetas = new GridLayout(2, (VectorProcesos.size()*2)+1, 5, 5);
PanelDiagrama.setLayout(GridBotonesEtiquetas);
this.TiempEsperaPromedio=TEP;
int j=0;
int vectorux[]=vectoraux;
String ProcesosNombres[]=ProcesosNombres1;
/*CREANDO LAS ETIQUETAS CON LOS NOMBRES DE LOS PROCESOS*/
for (int i=0;i<(VectorProcesos.size()*2)+1;i++){
if (i%2!=0){
GanttBotones[i]=new JLabel(ProcesosNombres[j]);
GanttBotones[i].setBorder(BorderFactory.createLineBorder(Color.BLUE, 2));
GanttBotones[i].setFont(new Font("Arial", Font.BOLD, 14));
GanttBotones[i].setHorizontalAlignment(JLabel.CENTER);
PanelDiagrama.add(GanttBotones[i]);
j++;
}
else{
GanttBotones[i]=new JLabel("");
GanttBotones[i].setVisible(false);
PanelDiagrama.add(GanttBotones[i]);
}
}
JLabel PrimerElemento=new JLabel("0");
PrimerElemento.setFont(new Font("Arial", Font.BOLD, 14));
GanttEtiquetas[0]=PrimerElemento;
PanelDiagrama.add(GanttEtiquetas[0]);
j=0;
/*CREANDO LAS ETIQUETAS CON LAS LEYENDAS DE LOS TIEMPOS DE
* RAFAGA RESPECTIVOS PARA CADA PROCESO*/
for (int i=1;i<(VectorProcesos.size()*2)+1;i++){
if(i%2==0){
String datos=new String(String.valueOf(vectorux[j]));
GanttEtiquetas[j+1]=new JLabel(datos);
GanttEtiquetas[j+1].setFont(new Font("Arial", Font.BOLD, 14));
PanelDiagrama.add(GanttEtiquetas[j+1]);
j++;
}
else{
GanttEtiquetas[i]=new JLabel("");
GanttEtiquetas[i].setVisible(false);
PanelDiagrama.add(GanttEtiquetas[i]);
}
}
/*COLOCANDO LA LEYENDA CON EL TIEMPO DE ESPERA PROMEDIO*/
JLabel LabelTEP=new JLabel("Tiempo de Espera Promedio = "+String.valueOf(TiempEsperaPromedio));
LabelTEP.setFont(new Font("Arial", Font.BOLD, 14));
PanelTEP.add(LabelTEP,BorderLayout.SOUTH);
getContentPane().add(PanelDiagrama);
getContentPane().add(PanelTEP);
setSize(400, 100);
setVisible(true);
setResizable(true);
}/*FIN DE LA FUNCION crearDiagrama*/
/*ESTA FUNCION SIRVE PARA CREAR EL DIAGRAMA DEL ALORITMO POR TURNOS*/
public void crearDiagramaPorTurnos(int [] vectoraux1,int tamano,String [] ProcesosNombres1,double TiempoEspera){
GridBotonesEtiquetas = new GridLayout(2, (tamano*2)+1, 5, 5);
PanelDiagrama.setLayout(GridBotonesEtiquetas);
GanttBotones=new JLabel[(tamano*2)+1];
GanttEtiquetas=new JLabel[(tamano*2)+1];
int j=0;
int vectorux[]=vectoraux1;
/*CREANDO LAS ETIQUETAS CON LOS NOMBRES DE LOS PROCESOS*/
for (int i=0;i<(tamano*2)-1;i++){
if (i%2!=0){
GanttBotones[i]=new JLabel(ProcesosNombres1[j]);
GanttBotones[i].setBorder(BorderFactory.createLineBorder(Color.BLUE, 2));
GanttBotones[i].setHorizontalAlignment(JLabel.CENTER);
PanelDiagrama.add(GanttBotones[i]);
j++;
}
else{
GanttBotones[i]=new JLabel("");
GanttBotones[i].setVisible(false);
PanelDiagrama.add(GanttBotones[i]);
}
}
j=0;
/*CREANDO LAS ETIQUETAS CON LAS LEYENDAS DE LOS TIEMPOS DE
* RAFAGA RESPECTIVOS PARA CADA PROCESO*/
for (int i=1;i<(tamano*2)+1;i++){
if(i%2==0){
String datos=new String(String.valueOf(vectorux[j]));
GanttEtiquetas[j]=new JLabel(datos);
PanelDiagrama.add(GanttEtiquetas[j]);
j++;
}
else{
GanttEtiquetas[i]=new JLabel("");
GanttEtiquetas[i].setVisible(false);
PanelDiagrama.add(GanttEtiquetas[i]);
}
}
/*COLOCANDO LA LEYENDA CON EL TIEMPO DE ESPERA PROMEDIO*/
JLabel LabelTEP=new JLabel("Tiempo de Espera Promedio = "+String.valueOf(TiempoEspera));
LabelTEP.setFont(new Font("Arial", Font.BOLD, 14));
PanelTEP.add(LabelTEP,BorderLayout.SOUTH);
getContentPane().add(PanelDiagrama);
getContentPane().add(PanelTEP);
setSize(400, 100);
setVisible(true);
setResizable(true);
}/* FIN DE LA FUNCION crearDiagramaPorTurnos*/
}/*FIN DE LA CLASE DiagramaGantt*/
Clase DiagramaGantt
Publicado por Darwin Sosa Gómez el lunes, septiembre 10, 2007
Suscribirse a:
Enviar comentarios (Atom)
0 comentarios:
Publicar un comentario