Ver Mensaje Individual
  #1 (permalink)  
Antiguo 09/07/2011, 12:33
sterlingdiazd
 
Fecha de Ingreso: junio-2009
Mensajes: 88
Antigüedad: 15 años, 5 meses
Puntos: 4
LinkedList y metodos internos

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 original
  1. public class ComponentesCentralita extends JFrame {
  2.     ...
  3.     int inicioDuracion;
  4.     String finDuracion = String.valueOf(inicioDuracion);
  5.     int tarifa;
  6.     LlamadaLocal local;
  7.     LlamadaProvincial provincial;
  8.     Llamada informe;
  9.     public LinkedList Llamadas = new LinkedList();
  10.     int costo;
  11.     int cont = 0;
  12.     double CostPerNum = 0;
  13.     String tipoLlamadaGuardada;
  14.     }
  15.    ...
  16.             //Los componentes añadidos
  17.  
  18.             Center1.add(botonLlamar);
  19.             Center1.add(botonGuardar);
  20.             Center1.add(botonColgar);
  21.            
  22.             EscuchadorLlamar escuchadorLlamar = new EscuchadorLlamar();
  23.             botonLlamar.addMouseListener(escuchadorLlamar);
  24.            
  25.             EscuchadorGuardar escuchadorGuardar = new EscuchadorGuardar();
  26.             botonGuardar.addMouseListener(escuchadorGuardar);
  27.            
  28.             EscuchadorColgar escuchadorColgar = new EscuchadorColgar();
  29.             botonColgar.addMouseListener(escuchadorColgar);
  30.  
  31.             South.add( botonFacturar );
  32.             EscuchadorFacturar escuchadorFacturar = new EscuchadorFacturar();
  33.             botonFacturar.addMouseListener(escuchadorFacturar);
  34.  
  35.             //El codigo que sigue acontinuacion es donde pienso que radica el           problema
  36. [INDENT]El siguiente evento es para cuando se presiona el boton llamar[/INDENT]
  37.             class EscuchadorLlamar implements MouseListener {
  38.             public void mouseClicked(MouseEvent arg0) {
  39.                 JOptionPane.showMessageDialog( ComponentesCentralita.this,
  40.                 "Seleccione el Tipo de Llamada en el panel izquierdo.",
  41.                 "Comenzar LLamada", JOptionPane.INFORMATION_MESSAGE);
  42.                 mensajes.setText("Seleccione el tipo de llamada");
  43.                 realizandoLlamada.setText("Localidad Indicada");
  44.             }
  45.             public void mouseEntered(MouseEvent arg0) {
  46.             }
  47.             public void mouseExited(MouseEvent arg0) {
  48.             }
  49.             public void mousePressed(MouseEvent arg0) {
  50.             }
  51.             public void mouseReleased(MouseEvent arg0) {
  52.             }
  53.         }
  54. [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.
  55. 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).
  56. [/INDENT]        
  57.         class EscuchadorGuardar implements MouseListener {
  58.             public void mouseClicked(MouseEvent arg0) {
  59.             }
  60.             public void mouseEntered(MouseEvent arg0) {
  61.             }
  62.             public void mouseExited(MouseEvent arg0) {
  63.             }
  64.             public void mousePressed(MouseEvent arg0) {
  65.                 JOptionPane.showMessageDialog( ComponentesCentralita.this,
  66.                 "Su llamada se ha guardado correctamente. "
  67.                 + "\nDele a Colgar para realizar mas llamadas.",
  68.                 "Llamada Guardada", JOptionPane.INFORMATION_MESSAGE);
  69.                 mensajes.setText("Cliquee Colgar");
  70.                
  71.                 if ( realizandoLlamada.getText().equals("Local") ){
  72.                     tipoLlamadaGuardada = "Local";
  73.                     local = new LlamadaLocal();
  74.                     local.numOrigen = NumOrigenCenter.getText();
  75.                     local.numDestino = etiquetaNumDestino.getText();
  76.                     local.duracion = inicioDuracion;
  77.                     local.costoLlamada = costo;
  78.                     local.lugar = "Local    ";
  79.                 } else {
  80.                     provincial = new LlamadaProvincial();
  81.                     provincial.numOrigen = NumOrigenCenter.getText();
  82.                     provincial.numDestino = etiquetaNumDestino.getText();
  83.                     provincial.duracion = inicioDuracion;
  84.                     provincial.costoLlamada = costo;
  85.                     provincial.lugar = "Provincial";
  86.                 }
  87.                
  88.                
  89.             }
  90.             public void mouseReleased(MouseEvent arg0) {
  91.             }
  92.         }
  93.        
  94.         class EscuchadorColgar implements MouseListener {
  95.             public void mouseClicked(MouseEvent arg0) {
  96.             }
  97.             public void mouseEntered(MouseEvent arg0) {
  98.             }
  99.             public void mouseExited(MouseEvent arg0) {
  100.             }
  101.             public void mousePressed(MouseEvent arg0) {
  102.                 JOptionPane.showMessageDialog( ComponentesCentralita.this,
  103.                 "Su llamada se ha realizado correctamente. "
  104.                 + "\nGracias por utilizar nuestros servicios.",
  105.                 "Llamada Facturada", JOptionPane.INFORMATION_MESSAGE);
  106.                
  107.                 NumOrigenCenter.setText(" ");
  108.                 etiquetaNumOrigenWest.setText("");
  109.                 etiquetaNumDestino.setText(" ");
  110.                 etiquetaDuracion.setText(" ");
  111.                 etiquetaCosto.setText(" ");
  112.                 NumOrigenCenter.setText(" ");                
  113.                 etiquetaNumDestinoCenter.setText(" ");
  114.                 etiquetaNumLlamadas.setText(" ");
  115.                 etiquetaCostoLlamadas.setText(" ");
  116.                 mensajes.setText("Cliquee el boton de Llamar");
  117.                
  118.             }
  119.             public void mouseReleased(MouseEvent arg0) {
  120.             }
  121.         }
  122. [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]
  123.         class EscuchadorFacturar extends Centralita implements MouseListener {
  124.             public void mouseClicked(MouseEvent arg0) {
  125.                 realizandoLlamada.setText(" ");
  126.                
  127.                 if ( tipoLlamadaGuardada.equals("Local") ){
  128.                     local.getNumDestino();
  129.                     local.getCostoLlamada();
  130.                     Llamadas.add(local);
  131.                 } else {
  132.                     provincial.getNumDestino();
  133.                     provincial.getCostoLlamada();
  134.                     Llamadas.add(provincial);
  135.                 }
  136.                
  137.                 mensajes.setText("Facturacion Total");
  138.                    for (int i = 0; i < Llamadas.size(); i++){
  139.                    informe = (Llamada) Llamadas.get(i) ;
  140.                    //cont++;
  141.                    CostPerNum += informe.costoLlamada;
  142.                 }
  143.                
  144.                 etiquetaNumLlamadas.setText(String.valueOf(Llamadas.size()));
  145.                 etiquetaCostoLlamadas.setText(String.valueOf(CostPerNum));
  146.            
  147.             }
  148.             public void mouseEntered(MouseEvent arg0) {
  149.             }
  150.             public void mouseExited(MouseEvent arg0) {
  151.             }
  152.             public void mousePressed(MouseEvent arg0) {
  153.             }
  154.             public void mouseReleased(MouseEvent arg0) {
  155.             }
  156.         }

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.