Foros del Web » Programación para mayores de 30 ;) » Java »

LinkedList y metodos internos

Estas en el tema de LinkedList y metodos internos en el foro de Java en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 09/07/2011, 12:33
 
Fecha de Ingreso: junio-2009
Mensajes: 88
Antigüedad: 15 años, 4 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.
  #2 (permalink)  
Antiguo 10/07/2011, 03:38
Avatar de Xerelo  
Fecha de Ingreso: mayo-2009
Mensajes: 2.175
Antigüedad: 15 años, 6 meses
Puntos: 306
Respuesta: LinkedList y metodos internos

Fíjate que ni siquiera has explicado qué es lo que se supone que debería hacer tú programa, así que estás pidiendo que alguien se lea tus 150 líneas de código, interprete lo que querías hacer y busque el fallo.

Utiliza el debug, de esa forma verás dónde se desvía tu programa del comportamiento deseado. Aprender a usarlo es imprescindible si pretendes programar.
__________________
Cada vez que solucionas los problemas de alguien que no se esfuerza, piensa en que el día de mañana puede llegar a ser tu compañero de trabajo, o peor, tu jefe.

Etiquetas: internos, jframe, metodos
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 14:24.