Evento Docente Universida del Mar

Clase SimuladorPORTURNOS

/*ESTA CLASE AYUDA A HACER LA SIMULACION DEL ALGORITMO POR TURNOS*/
import java.awt.Color;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JPanel;

public class SimuladorPORTURNOS extends JFrame implements ActionListener{
private JButton Cuadricula[][]=new JButton[30][25];
private JPanel PanelContenedor=new JPanel();
private int NumProceso=0;
private int NumProceso1=0;
private int orden=0,orden1=0;;

public SimuladorPORTURNOS(){/*CONSTRUCTOR*/
PanelContenedor.setLayout(new GridLayout(30,25,0,0));
NumProceso1=NumProceso;
/*CREANDO LA CUADRICULA DE BOTONES QUE SIMULAN LOS PROCESOS*/
for(int i=0;i<30;i++){
for (int j=0;j<25;j++){
Cuadricula[i][j]=new JButton("");
Cuadricula[i][j].setVisible(false);
PanelContenedor.add(Cuadricula[i][j]);
/*ESTABLECIENDO EN POSICIONES FIJAS LOS ESTADOS*/
if (i==8 && j==8){
Cuadricula[i][j].setText("L");
Cuadricula[i][j].setToolTipText("Estado LISTO");
Cuadricula[i][j].setVisible(true);
}
if (i==8 && j==17){
Cuadricula[i][j].setText("E");
Cuadricula[i][j].setToolTipText("Estado EJECUCION");
Cuadricula[i][j].setVisible(true);
}
if (i==0 && j==0){
Cuadricula[i][j].setText("N");
Cuadricula[i][j].setToolTipText("Estado NUEVO");
Cuadricula[i][j].setVisible(true);
}
if (i==0 && j==24){
Cuadricula[i][j].setText("T");
Cuadricula[i][j].setToolTipText("Estado TERMINADO");
Cuadricula[i][j].setVisible(true);
}
}/*Termina FOR*/
}/*Termina FOR*/

getContentPane().add(PanelContenedor);
setSize(1000,800);
setResizable(true);
setVisible(true);
}/*FIN CONSTRUCTOR*/
/*MOVIENDO EL ESTADO ACTUAL DESDE EL ESTADO LSITO HASTA EL ESTADO EJECUCION
* limite EQUIVALE AL NUMERO DEL PROCESO*/
public void Listo_Ejecucion(int limite){
Cuadricula[7+limite][1].setVisible(false);
Color fondo=Cuadricula[7+limite][1].getBackground();

for(int i=8;i<=17;i++){
Cuadricula[7][i].setText(String.valueOf(limite));
Cuadricula[7][i].setBackground(fondo);
Cuadricula[7][i].setVisible(true);
Cuadricula[7][i-1].setVisible(false);

try {Thread.sleep(100);}
catch (InterruptedException e){e.printStackTrace();}
}
}/*FIN Listo_Ejecucion*/
/*MOVIENDO EL PROCESO ACTUAL DESDE EL ESTADO DE EJECUCION HASTA EL ESTADO DE
* LISTO, ESTO, CUANDO SE ES DESALJADO POR OTRO PORCESO. limite ES IGUAL AL NUMERO
* DEL PROCESO*/
public void Ejecucion_Listo(int limite){
Cuadricula[7+limite][1].setVisible(false);
Color fondo=Cuadricula[7+limite][1].getBackground();

for(int i=17;i>=8;i--){
Cuadricula[9][i].setText(String.valueOf(limite));
Cuadricula[9][i].setBackground(fondo);
Cuadricula[9][i].setVisible(true);
Cuadricula[9][i+1].setVisible(false);

try {Thread.sleep(100);}
catch (InterruptedException e){e.printStackTrace();}
}
}/*FIN Ejecucion_Listo*/
/*MOVIENDO EL PROCESO DESDE EL ESTADO EJECUCION HASTA EL ESTADO TERMINADO, limite
* LLEVA EL NOMBRE O NUMERO DEL PROCESO*/
public void Ejecucion_Terminado(int limite){
orden1++;
NumProceso1++;
Color fondo=Cuadricula[7][17].getBackground();

for(int i=7,j=6;i>=1;i--,j--){
Cuadricula[i][17].setText(""+limite);
Cuadricula[i][17].setBackground(fondo);
Cuadricula[i][17].setVisible(true);
try {
Thread.sleep(100);
Cuadricula[j+1][17].setVisible(false);
}
catch (InterruptedException e){e.printStackTrace();}
}

for(int i=17;i<25;i++){
Cuadricula[1][i].setText(""+limite);
Cuadricula[1][i].setBackground(fondo);
Cuadricula[1][i].setVisible(true);
Cuadricula[1][i-1].setVisible(false);

try {Thread.sleep(100);}
catch (InterruptedException e){e.printStackTrace();}
}
Cuadricula[1][24].setVisible(false);
/*COLOCANDO LOS PROCESOS TERMINADOS EN LA COLA DE TERMINADO, orden1 LLEVA LA
* POSICION DEL PROCESO EN LA COLA*/
switch(orden1)
{
case 1:
Cuadricula[8][24].setText(String.valueOf(limite));
Cuadricula[8][24].setBackground(fondo);
Cuadricula[8][24].setVisible(true);
break;
case 2:
Cuadricula[9][24].setText(String.valueOf(limite));
Cuadricula[9][24].setBackground(fondo);
Cuadricula[9][24].setVisible(true);
break;
case 3:
Cuadricula[10][24].setText(String.valueOf(limite));
Cuadricula[10][24].setBackground(fondo);
Cuadricula[10][24].setVisible(true);
break;
case 4:
Cuadricula[11][24].setText(String.valueOf(limite));
Cuadricula[11][24].setBackground(fondo);
Cuadricula[11][24].setVisible(true);
break;
case 5:
Cuadricula[12][24].setText(String.valueOf(limite));
Cuadricula[12][24].setBackground(fondo);
Cuadricula[12][24].setVisible(true);
break;
case 6:
Cuadricula[13][24].setText(String.valueOf(limite));
Cuadricula[13][24].setBackground(fondo);
Cuadricula[13][24].setVisible(true);
break;
case 7:
Cuadricula[14][24].setText(String.valueOf(limite));
Cuadricula[14][24].setBackground(fondo);;
Cuadricula[14][24].setVisible(true);
break;
case 8:
Cuadricula[15][24].setText(String.valueOf(limite));
Cuadricula[15][24].setBackground(fondo);
Cuadricula[15][24].setVisible(true);
break;
case 9:
Cuadricula[16][24].setText(String.valueOf(limite));
Cuadricula[16][24].setBackground(fondo);
Cuadricula[16][24].setVisible(true);
break;
case 10:
Cuadricula[17][24].setText(String.valueOf(limite));
Cuadricula[17][24].setBackground(fondo);
Cuadricula[17][24].setVisible(true);
break;
case 11:
Cuadricula[18][24].setText(String.valueOf(limite));
Cuadricula[18][24].setBackground(fondo);
Cuadricula[18][24].setVisible(true);
break;
case 12:
Cuadricula[19][24].setText(String.valueOf(limite));
Cuadricula[19][24].setBackground(fondo);
Cuadricula[19][24].setVisible(true);
break;
case 13:
Cuadricula[20][24].setText(String.valueOf(limite));
Cuadricula[20][24].setBackground(fondo);
Cuadricula[20][24].setVisible(true);
break;
case 14:
Cuadricula[21][24].setText(String.valueOf(limite));
Cuadricula[21][24].setBackground(fondo);
Cuadricula[21][24].setVisible(true);
break;
case 15:
Cuadricula[22][24].setText(String.valueOf(limite));
Cuadricula[22][24].setBackground(fondo);
Cuadricula[22][24].setVisible(true);
break;
case 16:
Cuadricula[23][24].setText(String.valueOf(limite));
Cuadricula[23][24].setBackground(fondo);
Cuadricula[23][24].setVisible(true);
break;
case 17:
Cuadricula[24][24].setText(String.valueOf(limite));
Cuadricula[24][24].setBackground(fondo);
Cuadricula[24][24].setVisible(true);
break;
case 18:
Cuadricula[25][24].setText(String.valueOf(limite));
Cuadricula[25][24].setBackground(fondo);
Cuadricula[25][24].setVisible(true);
break;
case 19:
Cuadricula[26][24].setText(String.valueOf(limite));
Cuadricula[26][24].setBackground(fondo);
Cuadricula[26][24].setVisible(true);
break;
case 20:
Cuadricula[27][24].setText(String.valueOf(limite));
Cuadricula[27][24].setBackground(fondo);
Cuadricula[27][24].setVisible(true);
break;
default:
JOptionPane.showMessageDialog(null,"Solo se soportan 20 procesos");
}/*FIN DEL SWITCH*/
}/*FIN Ejecucion_Terminado*/
/*CREANDO UN NUEVO PROCESO Y MOVIENDO EL PROCESO CREADO DESDE EL ESTADO NUEVO HASTA LA COLA DE
* LSITO, LOS TRES PARAMETROS RECIBIDOS (int red, int green,int blue) PERTENECEN AL COLOR DE
* FONDO QUE HA DE TOMAR BOTON QUE REPRESENTE EL NUEVO PROCESO*/
public void Nuevo_Listo(int red, int green,int blue){
NumProceso++;
for(int i=1;i<8;i++){
Cuadricula[1][i].setText(""+NumProceso);
Cuadricula[1][i].setBackground(new Color(red,green,blue));
Cuadricula[1][i].setVisible(true);
Cuadricula[1][i-1].setVisible(false);

try {Thread.sleep(100);}
catch (InterruptedException e){e.printStackTrace();}
}
Cuadricula[1][7].setVisible(false);
for(int i=1;i<8;i++){
Cuadricula[i][8].setText(""+NumProceso);
Cuadricula[i][8].setBackground(new Color(red,green,blue));
Cuadricula[i][8].setVisible(true);
Cuadricula[i-1][8].setVisible(false);

try {Thread.sleep(100);}
catch (InterruptedException e){e.printStackTrace();}
}
Cuadricula[7][8].setVisible(false);
}/*FIN Nuevo_Listo*/
/*MOVIENDO EL PROCESO CREADO DESDE EL ESTADO DE LISTO HASTA LA COLA DE ESPERA
* LOS TRES PARAMETROS RECIBIDOS (int red, int green,int blue) PERTENECEN AL COLOR DE
* FONDO QUE HA DE TOMAR BOTON QUE REPRESENTA AL PROCESO*/
public void Listo_Cola(int red, int green,int blue){
orden++;
for(int i=7;i>=1;i--){
if (i>1){
Cuadricula[8][i].setText(""+NumProceso);
Cuadricula[8][i].setBackground(new Color(red,green,blue));
Cuadricula[8][i].setVisible(true);
}
if(i!=7)
Cuadricula[8][i+1].setVisible(false);

try {Thread.sleep(100);}
catch (InterruptedException e){e.printStackTrace();}
}
/*COLOCANDO EL PROCESO EN UNA POSICION ESPECIFICA DE LA CUADRICULA, orden
* GUARDA LA POSICION EN LA COLA*/
switch(orden)
{
case 1:
Cuadricula[8][1].setText(""+NumProceso);
Cuadricula[8][1].setBackground(new Color(red,green,blue));
Cuadricula[8][1].setVisible(true);
break;
case 2:
Cuadricula[9][1].setText(""+NumProceso);
Cuadricula[9][1].setBackground(new Color(red,green,blue));
Cuadricula[9][1].setVisible(true);
break;
case 3:
Cuadricula[10][1].setText(""+NumProceso);
Cuadricula[10][1].setBackground(new Color(red,green,blue));
Cuadricula[10][1].setVisible(true);
break;
case 4:
Cuadricula[11][1].setText(""+NumProceso);
Cuadricula[11][1].setBackground(new Color(red,green,blue));
Cuadricula[11][1].setVisible(true);
break;
case 5:
Cuadricula[12][1].setText(""+NumProceso);
Cuadricula[12][1].setBackground(new Color(red,green,blue));
Cuadricula[12][1].setVisible(true);
break;
case 6:
Cuadricula[13][1].setText(""+NumProceso);
Cuadricula[13][1].setBackground(new Color(red,green,blue));
Cuadricula[13][1].setVisible(true);
break;
case 7:
Cuadricula[14][1].setText(""+NumProceso);
Cuadricula[14][1].setBackground(new Color(red,green,blue));
Cuadricula[14][1].setVisible(true);
break;
case 8:
Cuadricula[15][1].setText(""+NumProceso);
Cuadricula[15][1].setBackground(new Color(red,green,blue));
Cuadricula[15][1].setVisible(true);
break;
case 9:
Cuadricula[16][1].setText(""+NumProceso);
Cuadricula[16][1].setBackground(new Color(red,green,blue));
Cuadricula[16][1].setVisible(true);
break;
case 10:
Cuadricula[17][1].setText(""+NumProceso);
Cuadricula[17][1].setBackground(new Color(red,green,blue));
Cuadricula[17][1].setVisible(true);
break;
case 11:
Cuadricula[18][1].setText(""+NumProceso);
Cuadricula[18][1].setBackground(new Color(red,green,blue));
Cuadricula[18][1].setVisible(true);
break;
case 12:
Cuadricula[19][1].setText(""+NumProceso);
Cuadricula[19][1].setBackground(new Color(red,green,blue));
Cuadricula[19][1].setVisible(true);
break;
case 13:
Cuadricula[20][1].setText(""+NumProceso);
Cuadricula[20][1].setBackground(new Color(red,green,blue));
Cuadricula[20][1].setVisible(true);
break;
case 14:
Cuadricula[21][1].setText(""+NumProceso);
Cuadricula[21][1].setBackground(new Color(red,green,blue));
Cuadricula[21][1].setVisible(true);
break;
case 15:
Cuadricula[22][1].setText(""+NumProceso);
Cuadricula[22][1].setBackground(new Color(red,green,blue));
Cuadricula[22][1].setVisible(true);
break;
case 16:
Cuadricula[23][1].setText(""+NumProceso);
Cuadricula[23][1].setBackground(new Color(red,green,blue));
Cuadricula[23][1].setVisible(true);
break;
case 17:
Cuadricula[24][1].setText(""+NumProceso);
Cuadricula[24][1].setBackground(new Color(red,green,blue));
Cuadricula[24][1].setVisible(true);
break;
case 18:
Cuadricula[25][1].setText(""+NumProceso);
Cuadricula[25][1].setBackground(new Color(red,green,blue));
Cuadricula[25][1].setVisible(true);
break;
case 19:
Cuadricula[26][1].setText(""+NumProceso);
Cuadricula[26][1].setBackground(new Color(red,green,blue));
Cuadricula[26][1].setVisible(true);
break;
case 20:
Cuadricula[27][1].setText(""+NumProceso);
Cuadricula[27][1].setBackground(new Color(red,green,blue));
Cuadricula[27][1].setVisible(true);
break;
default:
JOptionPane.showMessageDialog(null,"Solo se soportan 20 procesos");
}/*FIN SWITCH*/
}/*FIN Listo_Cola*/
public void actionPerformed(ActionEvent arg0) {
for(int i=0;i<25;i++){
for (int j=0;j<25;j++){
if (arg0.getSource().equals(Cuadricula[i][j])) {

}
}
}

}/*FIN actionPerformed*/
}/*FIN DE LA CLASE SimuladorPORTURNOS*/

Tags:

0 comentarios: