Ver Mensaje Individual
  #2 (permalink)  
Antiguo 12/08/2010, 18:42
Avatar de HackmanC
HackmanC
 
Fecha de Ingreso: enero-2008
Ubicación: Guatemala
Mensajes: 1.817
Antigüedad: 16 años, 3 meses
Puntos: 260
Sonrisa Respuesta: Problema Vista Modelo

Hola,

La programación MVC original está basada en eventos (programación basada o dirigida a eventos). Es decir, el controlador no repite la misma operación infinitamente (while), ni espera hasta que suceda un evento (sino se queda 'trabada' la PC mientras espera y no puede hacer otra cosa).

Solamente se conectan el que genera el evento con el que recibe el evento, y normalmente el propio evento es un mensaje. En otras palabras una conversación de emisor, receptor y mensaje. Pero el receptor no está chequeando cada segundo para ver si hubo un evento, ni espera por el. Cuando el emisor emite el evento entonces el receptor responde consecuentemente.

En java para facilitar estos procedimientos existen los Listeners, y existen Listeners para escuchar o responder ante cualquier tipo de evento.

Por ejemplo:

Creamos 2 TextField:

Código:
        jTextField1 = new javax.swing.JTextField();
        jTextField2 = new javax.swing.JTextField();
En los TextField ponemos un mensaje, pero en el primero conectamos con un KeyListener al segundo TextField. Por así decirlo, realmente vamos a realizar una acción en consecuencia de un evento que sucedió, como en este caso, una tecla que se presionó en el teclado.

Código:
        jTextField1.setText("ESCRIBE 'PLAYA' o 'MONTANA'");
        jTextField2.setText("AQUI VA LA RESPUESTA");

        jTextField1.addKeyListener(new java.awt.event.KeyAdapter() {
            public void keyReleased(java.awt.event.KeyEvent evt) {
              if (evt.getKeyCode() == java.awt.event.KeyEvent.VK_ENTER) {
                    jTextField2.setText("PRESIONASTE ENTER");
                    // Hacer algo mas según respuesta
              }
            }
        });
Cuando se presiona cualquier tecla en el TextField1 se va a llamar al método descrito en el KeyListener, este revisa si se presionó la tecla Enter y muestra un mensaje en el TextField2.

Con esta metodología no se desperdician recursos, como un ciclo que está dando vueltas millones de veces revisando si sucedió un evento. Swing y AWT fueron creado de esta forma para funcionar correctamente.

Saludos,

ps:

El ejemplo no es el mejor del mundo, en este caso solamente responde a un evento del teclado, en otros casos se conectan directamente un objeto con el otro, guardando una referencia dentro de un listado de receptores del evento.

Última edición por HackmanC; 12/08/2010 a las 19:15 Razón: * fallo del internet