Saludos
Les pido su ayuda para resolver el problema que tengo con este programa que debe simular una centralita.
El problema que tengo es que no logro ver que esta mal con el codigo que no me devuelve el resultado de todas las llamadas. Les pondre todo el codigo necesario para que puedan ver como funciona.
Código Java:
Ver originalpublic class ComponentesCentralita
extends JFrame { ...
int inicioDuracion;
int tarifa;
LlamadaLocal local;
LlamadaProvincial provincial;
Llamada informe;
int costo;
int cont = 0;
double CostPerNum = 0;
}
...
//Los componentes añadidos
Center1.add(botonLlamar);
Center1.add(botonGuardar);
Center1.add(botonColgar);
EscuchadorLlamar escuchadorLlamar = new EscuchadorLlamar();
botonLlamar.addMouseListener(escuchadorLlamar);
EscuchadorGuardar escuchadorGuardar = new EscuchadorGuardar();
botonGuardar.addMouseListener(escuchadorGuardar);
EscuchadorColgar escuchadorColgar = new EscuchadorColgar();
botonColgar.addMouseListener(escuchadorColgar);
South.add( botonFacturar );
EscuchadorFacturar escuchadorFacturar = new EscuchadorFacturar();
botonFacturar.addMouseListener(escuchadorFacturar);
//El codigo que sigue acontinuacion es donde pienso que radica el problema
[INDENT]El siguiente evento es para cuando se presiona el boton llamar[/INDENT]
JOptionPane.
showMessageDialog( ComponentesCentralita.
this,
"Seleccione el Tipo de Llamada en el panel izquierdo.",
mensajes.setText("Seleccione el tipo de llamada");
realizandoLlamada.setText("Localidad Indicada");
}
}
}
}
}
}
[INDENT]Luego que todos los datos han sido introducidos, entonces guardo la llamada. Hay dos tipos de llamadas: locales y provinciales. Hice un linkedlist para guardar las llamadas sin importar el tipo, ya que comparten los mismos atributos.
Si es local, guardo los datos en una llamada de tipo local, y añado esa llamada en el linkedlist. Eso es dentro del evento. El problema esta en que luego, en el siguiente evento (Colgar), los datos se borran, y luego quiero llamar esos datos en otro evento (Facturar).
[/INDENT]
}
}
}
JOptionPane.
showMessageDialog( ComponentesCentralita.
this,
"Su llamada se ha guardado correctamente. "
+ "\nDele a Colgar para realizar mas llamadas.",
mensajes.setText("Cliquee Colgar");
if ( realizandoLlamada.getText().equals("Local") ){
tipoLlamadaGuardada = "Local";
local = new LlamadaLocal();
local.numOrigen = NumOrigenCenter.getText();
local.numDestino = etiquetaNumDestino.getText();
local.duracion = inicioDuracion;
local.costoLlamada = costo;
local.lugar = "Local ";
} else {
provincial = new LlamadaProvincial();
provincial.numOrigen = NumOrigenCenter.getText();
provincial.numDestino = etiquetaNumDestino.getText();
provincial.duracion = inicioDuracion;
provincial.costoLlamada = costo;
provincial.lugar = "Provincial";
}
}
}
}
}
}
}
JOptionPane.
showMessageDialog( ComponentesCentralita.
this,
"Su llamada se ha realizado correctamente. "
+ "\nGracias por utilizar nuestros servicios.",
NumOrigenCenter.setText(" ");
etiquetaNumOrigenWest.setText("");
etiquetaNumDestino.setText(" ");
etiquetaDuracion.setText(" ");
etiquetaCosto.setText(" ");
NumOrigenCenter.setText(" ");
etiquetaNumDestinoCenter.setText(" ");
etiquetaNumLlamadas.setText(" ");
etiquetaCostoLlamadas.setText(" ");
mensajes.setText("Cliquee el boton de Llamar");
}
}
}
[INDENT]En este evento, llamo los atributos de la llamada, y si es local o provincial, deberia añadir la llamada local con su costo, al linked list para calcular la cantidad de llamadas y el costo total de todas las llamadas en las etiquetas que se ve debajo, luego que haya recorrido el ciclo sumando el costo de cada llamada sin importar el tipo.[/INDENT]
class EscuchadorFacturar
extends Centralita
implements MouseListener { realizandoLlamada.setText(" ");
if ( tipoLlamadaGuardada.equals("Local") ){
local.getNumDestino();
local.getCostoLlamada();
Llamadas.add(local);
} else {
provincial.getNumDestino();
provincial.getCostoLlamada();
Llamadas.add(provincial);
}
mensajes.setText("Facturacion Total");
for (int i = 0; i < Llamadas.size(); i++){
informe = (Llamada) Llamadas.get(i) ;
//cont++;
CostPerNum += informe.costoLlamada;
}
etiquetaNumLlamadas.
setText(String.
valueOf(Llamadas.
size())); etiquetaCostoLlamadas.
setText(String.
valueOf(CostPerNum
));
}
}
}
}
}
}
Gracias de antemano por cualquier ayuda que me puedan brindar. El codigo no me da error, todo funciona bien, pero Solo me muestra uan llamada. En cantidad total de llamadas solo me muestra 1 llamada y el muestra el costo de la ultima llamada.
Este es el primer proyecto en el que trabajo con eventos y me parece que el problema esta en realizar estas funciones dentro de los eventos del MouseListener. Gracias, cualquier ayuda se agradece.