Está en la página 1de 23

Facultad de Ingeniería

Programa de Estudios: Ingeniería de Computación y Sistemas

Interfaz Gráfica de Usuario: CLASE 12


Manejo de eventos
Experiencia Curricular: Programación Orientada a Objetos
Docente: Ms. Zoraida Yanet Vidal Melgarejo.

Interfaces gráficas de usuario (GUI). -2-

Las interfaces gráficas de usuarios a base de ventanas son elementos que se


utilizan en el desarrollo de aplicaciones.

Una de las ventajas de trabajar con ventanas es que todas se comportan de


la misma forma independientemente del sistema operativo con el que se
trabaje (Windows, Linux, etc.) y, en muchos casos, utilizan los mismos
componentes básicos para introducir órdenes (menús descendentes,
botones, etc.).

2
Experiencia Curricular : Programación Orientada a Objetos Tema: Interfaz Gráfica de Usuario:
Docente: Ms. Zoraida Yanet Vidal Melgarejo Manejo de eventos Página - 1 -
Facultad de Ingeniería
Programa de Estudios: Ingeniería de Computación y Sistemas

Interfaces gráficas de usuario (GUI). -3-

Ícono de la Barra de Botones de control


aplicación título de ventana

Barra
de
menú

Marco de
Barra de la ventana
herramientas

Barra de Barras de
estado desplazamiento
Área de trabajo

Interfaces gráficas de usuario (GUI). -4-

• Barra de menú: visualiza el conjunto de los menús disponibles para esa


aplicación. Al activarse un menú se visualiza el conjunto de órdenes que la
forman.

• Ícono de la aplicación y menú de control: el menú de control


proporciona órdenes para restaurar tamaño, mover, dimensionar,
minimizar, maximizar y cerrar la ventana.

• Barra de título: contiene el nombre de la ventana y del documento.


También permite mover la ventana, maximizarla y restaurarla (en
combinación con el mouse).

4
Experiencia Curricular : Programación Orientada a Objetos Tema: Interfaz Gráfica de Usuario:
Docente: Ms. Zoraida Yanet Vidal Melgarejo Manejo de eventos Página - 2 -
Facultad de Ingeniería
Programa de Estudios: Ingeniería de Computación y Sistemas

Interfaces gráficas de usuario (GUI). -5-

• Botones de control de la ventana: al pulsar los botones permiten


minimizar, maximizar/restaurar y/o cerrar la ventana.

• Barras de desplazamiento: cuando la información es mayor al tamaño de


la ventana, Windows añade las barras de desplazamiento horizontal y/o
vertical según se requiera.

• Marco de la ventana: permite modificar el tamaño de la ventana.

Interfaces gráficas de usuario (GUI). -6-

• Área de trabajo: es la parte de la ventana en la que el usuario coloca el


texto y/o gráficos.

• Barra de herramientas: contiene un conjunto de ícono que permiten un


acceso rápido a algunas opciones del menú.

• Barra de estado: permite mostrar mensajes sobre la ubicación o el estado


de alguno de los componentes.

6
Experiencia Curricular : Programación Orientada a Objetos Tema: Interfaz Gráfica de Usuario:
Docente: Ms. Zoraida Yanet Vidal Melgarejo Manejo de eventos Página - 3 -
Facultad de Ingeniería
Programa de Estudios: Ingeniería de Computación y Sistemas

Biblioteca JFC -7-

Java proporciona una biblioteca de clases denominada JFC (Java


Foundation Classes – Clases Base de Java). Actualmente bajo esta
denominación se agrupan las siguientes APIs (interfaces para
programación de aplicaciones):

• Swing: conjunto de componentes escritos en Java para diseñar


interfaces gráficas de usuario que se ejecutan uniformemente en
cualquier plataforma nativa que soporta la máquina virtual de java.

Biblioteca JFC -8-

• AWT: Kit de herramientas de ventanas abstractas (Abstract Window


Toolkit). Grupo de componentes, para diseñar interfaces gráficas de
usuario, común a todas las plataformas, pero escritos
específicamente para cada plataforma en código nativo; esto es, no
están escritos en Java.

Muchos de los componentes AWT han sido sustituidos en gran


medida por el conjunto de componentes Swing, dado que muchos de
los componentes Swing heredan de sus correspondientes AWT.

8
Experiencia Curricular : Programación Orientada a Objetos Tema: Interfaz Gráfica de Usuario:
Docente: Ms. Zoraida Yanet Vidal Melgarejo Manejo de eventos Página - 4 -
Facultad de Ingeniería
Programa de Estudios: Ingeniería de Computación y Sistemas

Biblioteca JFC -9-

Diagrama de jerarquía de la clase Java Swing

Biblioteca JFC - 10 -

• Accesibilidad: ofrece soporte para usuarios con limitaciones.

• Java 2D: permite incorporar en los programas, gráficos 2D de alta


calidad, texto e imágenes.

• Soporte para arrastrar y colocar (drag and drop): permite la


transferencia de datos entre aplicaciones mediante la simple
operación de arrastrarlos hasta el lugar de destino.

10
Experiencia Curricular : Programación Orientada a Objetos Tema: Interfaz Gráfica de Usuario:
Docente: Ms. Zoraida Yanet Vidal Melgarejo Manejo de eventos Página - 5 -
Facultad de Ingeniería
Programa de Estudios: Ingeniería de Computación y Sistemas

Formularios - 11 -

Un formulario es una ventana sobre la que se dibujan otros objetos


llamados componentes o controles, como etiquetas, cajas de texto, etc.,
con el fin de aceptar, procesar o visualizar datos.

Una aplicación con una interfaz gráfica trabaja estableciendo entre los
objetos que componen la misma una comunicación mediante mensajes,
los cuales son producidos por eventos. Cuando un mensaje llega a un
objeto, éste tiene que procesarlo.

11

Formularios - 12 -

Un evento es un mecanismo mediante el cual el objeto puede notificar


de la ocurrencia de un suceso. El evento puede ser producido por el
usuario, por el sistema o indirectamente por el código.

En un entorno de ventanas, cada ventana y cada control pueden


responder a un conjunto de eventos predefinidos. Cuando ocurre uno
de estos eventos, el sistema envía un mensaje que será interceptado
por el objeto que deba responder al mismo. La respuesta consistirá en
la ejecución del método que se haya escrito para responder a dicho
evento.

12
Experiencia Curricular : Programación Orientada a Objetos Tema: Interfaz Gráfica de Usuario:
Docente: Ms. Zoraida Yanet Vidal Melgarejo Manejo de eventos Página - 6 -
Facultad de Ingeniería
Programa de Estudios: Ingeniería de Computación y Sistemas

Formularios - 13 -

Comienzo Método 1

Método 2
Recuperar Entregar
siguiente información del
evento evento
Método 3

Método 4
No
¿Salir?

Si

Fin

Secuencia de respuesta a la generación de un evento

13

Manejo de Eventos - 14 -

• El programador debe realizar dos tareas clave para procesar un evento de interfaz gráfica de
usuario en un programa: debe registrar un componente de escucha del evento para el componente
de la GUI que se espera genere ese evento, y debe implementar un método manejador del evento (o
un conjunto de métodos manejadores del evento).

• Cada interfaz de componente de escucha de eventos especifica uno o más métodos manejadores de
eventos que deben declararse en la clase que implemente a la interfaz de componente de escucha de
eventos. El uso de componentes de escucha de eventos en el manejo de eventos se conoce como el
modelo de delegación de eventos: el procesamiento de un evento se delega a un objeto específico (el
componente de escucha) en el programa.

14
Experiencia Curricular : Programación Orientada a Objetos Tema: Interfaz Gráfica de Usuario:
Docente: Ms. Zoraida Yanet Vidal Melgarejo Manejo de eventos Página - 7 -
Facultad de Ingeniería
Programa de Estudios: Ingeniería de Computación y Sistemas

Manejo de Eventos - 15 -

• Cuando ocurre un evento, el componente de la GUI con el que el usuario interactuó notifica a sus
componentes de escucha registrados, llamando al método manejador de eventos apropiado de cada
componente de escucha. Por ejemplo, cuando el usuario oprime la tecla Enter (evento ocurrido) en
un objeto JTextField (Componente), se hace una llamada al manejador de eventos actionPerformed
(método) del componente ActionListener (componente de escucha registrado).

15

Manejo de Eventos - 16 -

Secuencia de manejo de eventos

evento
Componente Componente de
ocurrido Escucha

Método
(respuesta al evento)

16
Experiencia Curricular : Programación Orientada a Objetos Tema: Interfaz Gráfica de Usuario:
Docente: Ms. Zoraida Yanet Vidal Melgarejo Manejo de eventos Página - 8 -
Facultad de Ingeniería
Programa de Estudios: Ingeniería de Computación y Sistemas

Manejo de Eventos: tipos de Listener’s - 17 -

• Cada vez que el usuario escribe un carácter, oprime un botón del mouse, hace un movimiento con el
cursor del mouse, presiona una combinación de teclas, ocurre un evento.
• El objeto que recibe el evento (un botón, un área de texto, un panel, una lista, entre otros), es
notificado en tiempo de ejecución de que recibió el evento.
• Todo lo que se debe hacer es implementar la interfaz apropiada y registrarla como un escucha en el
componente GUI apropiado.

17

Manejo de Eventos: tipos de Listener’s - 18 -

• Los eventos están agrupados de acuerdo a su naturaleza en los siguientes grupos:


✓ ActionListener: acciones sobre componentes.
✓ WindowListener: cierre o manipulación una ventana (Frame/Dialog).
✓ MouseListener: presión de un botón del mouse mientras el cursor está sobre el componente.
✓ MouseMotionListener: movimiento del cursor sobre un componente.
✓ ComponentListener: visibilidad del componentes.
✓ FocusListener: obtención del foco del teclado.
✓ ListSelectionListener: selección de ítems dentro de una lista.

18
Experiencia Curricular : Programación Orientada a Objetos Tema: Interfaz Gráfica de Usuario:
Docente: Ms. Zoraida Yanet Vidal Melgarejo Manejo de eventos Página - 9 -
Facultad de Ingeniería
Programa de Estudios: Ingeniería de Computación y Sistemas

Manejo de Eventos: tipos de Listener’s - 19 -

• Cuando un usuario hace clic sobre un botón o presiona la tecla Enter mientras digitaba en una caja
de texto o elige una opción de un menú, se genera un evento, que tiene los siguientes elementos:
✓ La fuente del evento (event source): Es el componente que origina el evento.
✓ El escuchador: (event listener) es el encargado de atrapar o escuchar el evento.
✓ El manejador del evento (event handler), es el método que permite implementar la interfaz,
es decir el escuchador. Este método:
➢ Recibe un objeto evento el cuál tiene información sobre el evento que sucedió,
➢ Descifra el evento, con dicho objeto, y
➢ Procesa lo solicitado por el usuario.

19

Manejo de Eventos: tipos de Listener’s - 20 -

El manejar un evento requiere que:

1. En la declaración de la clase que maneja el evento (event handler), se debe indicar que
implementa la interfaz correspondiente al evento (ABCListener, donde ABC es el tipo de
evento a observar o escuchar).
La clase puede implementar mas de un ABCListener. Si la clase no implementa la interfaz puede
ser que extienda a una clase que sí la implementa.

public class miClase implements ActionListener{...}

20
Experiencia Curricular : Programación Orientada a Objetos Tema: Interfaz Gráfica de Usuario:
Docente: Ms. Zoraida Yanet Vidal Melgarejo Manejo de eventos Página - 10 -
Facultad de Ingeniería
Programa de Estudios: Ingeniería de Computación y Sistemas

Manejo de Eventos: tipos de Listener’s - 21 -

2. En los componentes que son la fuente del evento se registra una instancia del manejador del
evento, como un observador o escucha del tipo de evento que maneja (ABCListener). Es decir, se le
dice al componente que va a escuchar los eventos del tipo del manejador.

componente.addActionListener(instancia_de_miClaseListener);

21

Manejo de Eventos: tipos de Listener’s - 22 -

3. En la clase que maneja el evento (event handler) se deben implementar los métodos de la
interface ABCListener que descifren el evento (ABCEvent) y lo procesen.

public void actionPerformed(ActionEvent e) {


//Código que reaccione a la acción
}

22
Experiencia Curricular : Programación Orientada a Objetos Tema: Interfaz Gráfica de Usuario:
Docente: Ms. Zoraida Yanet Vidal Melgarejo Manejo de eventos Página - 11 -
Facultad de Ingeniería
Programa de Estudios: Ingeniería de Computación y Sistemas

Manejo de Eventos: tipos de Listener’s - 23 -

ACTIONLISTENER
• Cuando un usuario hace clic sobre un botón o presiona la tecla Enter mientras digita en una caja
de texto o elige una opción de un menú, se genera un evento ActionEvent y un mensaje
actionPerformed se envía a todos observadores o escuchas (los componentes), que implementan
la interfaz ActionListener, registrados en el componente.

• La interface ActionListener presenta el método:


void actionPerformed(ActionEvent eve)
que tiene como parámetro el evento generado, que es un instancia de la clase ActionEvent, la que
se genera en tiempo de ejecución cuando el usuario inicia el evento.

23

Manejo de Eventos: tipos de Listener’s - 24 -

• La clase ActionEvent presenta además 2 métodos útiles:


String getActionCommand()
int getModifiers()
que permiten saber qué teclas se estaban presionando cuando se produjo el evento (Shift, Ctrl, Alt,
etc.)

24
Experiencia Curricular : Programación Orientada a Objetos Tema: Interfaz Gráfica de Usuario:
Docente: Ms. Zoraida Yanet Vidal Melgarejo Manejo de eventos Página - 12 -
Facultad de Ingeniería
Programa de Estudios: Ingeniería de Computación y Sistemas

Manejo de Eventos: tipos de Listener’s - 25 -

COMPONENTLISTENER
• Es un objeto que genera uno o más eventos justo después de que el componente haya sido
ocultado, hecho visible, movido o redimensionado.

• Uno o más eventos se disparan o activan después que un componente es escondido, se hace
visible, es movido ó se cambia su tamaño.

25

Manejo de Eventos: tipos de Listener’s - 26 -

• La interface ComponentListener y su correspondiente clase adaptadora ComponentAdapter,


presentan los siguientes métodos:
▪ void componentHidden(ComponentEvent evento)
Se invoca cuando el componente se ha hecho invisible.
▪ void componentMoved(ComponentEvent evento)
Se invoca cuando cambia la posición del componente.
▪ void componentResized(ComponentEvent evento
Se invoca cuando cambia el tamaño del componente.
▪ void componentShown(ComponentEvent evento)
Se invoca cuando el componente se ha hecho visible.

26
Experiencia Curricular : Programación Orientada a Objetos Tema: Interfaz Gráfica de Usuario:
Docente: Ms. Zoraida Yanet Vidal Melgarejo Manejo de eventos Página - 13 -
Facultad de Ingeniería
Programa de Estudios: Ingeniería de Computación y Sistemas

Manejo de Eventos: tipos de Listener’s - 27 -

ITEMLISTENER
• Los eventos ItemEvent son disparados o activados por componentes que implementan la interfaz
ItemSelectable. Estos componentes mantienen un estado on/off para uno o más items u opciones.

• La interface ItemListener tiene un solo método


void itemStateChanged(ItemEvent eve)
que se ejecuta justo después de que un componente cambia de estado.

• La clase ItemEvent tiene los siguientes métodos:


Object getItem()
ItemSelectable getItemSelectable()
int getStateChange()

27

Manejo de Eventos: tipos de Listener’s - 28 -

MOUSELISTENER
• Los eventos MouseEvent le informan cuando el usuario utiliza el mouse para interactuar con un
componente.
• Ocurren cuando el cursor entra o sale del área del componente en la ventana y cuando el usuario
oprime o libera el botón del mouse.
• La interface MouseListener y su correspondiente clase adaptadora MouseAdapter, contienen los
siguientes métodos:
void mouseClicked (MouseEvent eve)
void mousePressed (MouseEvent eve)
void mouseReleased (MouseEvent eve)
void mouseEntered (MouseEvent eve)
void mouseExited (MouseEvent eve)

28
Experiencia Curricular : Programación Orientada a Objetos Tema: Interfaz Gráfica de Usuario:
Docente: Ms. Zoraida Yanet Vidal Melgarejo Manejo de eventos Página - 14 -
Facultad de Ingeniería
Programa de Estudios: Ingeniería de Computación y Sistemas

Manejo de Eventos: tipos de Listener’s - 29 -

MOUSEMOTIONLISTENER
• Los eventos MouseMotion informan cuando el usuario mueve el cursor encima del componente.
• La interface MouseMotionListener y su correspondiente clase adaptadora MouseMotionAdapter,
contienen los siguientes métodos:
void mouseMoved(MouseEvent eve)
void mouseDragged(MouseEvent eve)
• La clase MouseInputAdapter implementa MouseListener y MouseMotionListener.

29

Manejo de Eventos: tipos de Listener’s - 30 -

KEYLISTENER
• Los eventos del teclado nos dicen cuando un usuario presiona o libera una tecla. Existen 2 tipos
de Eventos:
• Digitar un carácter Unicode (keyTyped)
• Presionar/liberar una tecla (keyPressed)
• Para que se active uno de los eventos el componente debe tener el foco:
void keyTyped (KeyEvent eve)
void keyPressed (KeyEvent eve)
void keyReleased (KeyEvent eve)

30
Experiencia Curricular : Programación Orientada a Objetos Tema: Interfaz Gráfica de Usuario:
Docente: Ms. Zoraida Yanet Vidal Melgarejo Manejo de eventos Página - 15 -
Facultad de Ingeniería
Programa de Estudios: Ingeniería de Computación y Sistemas

Manejo de Eventos: tipos de Listener’s - 31 -

• La Clase KeyEvent define los siguientes métodos útiles:


int getKeyChar()
void setKeyChar()
int getKeyCode()
void setKeyCode(int)
• La Clase KeyEvent, define muchas constantes así:
KeyEventVK_A especifica la tecla A.
KeyEventVK_ESCAPE especifica la tecla ESCAPE.

31

Manejo de Eventos: tipos de Listener’s - 32 -

FOCUSLISTENER
• Cuando un componente recibe el foco, es decir, es el elemento de la pantalla que está activo se
producen eventos de tipo FocusEvent.
• Para hacer que un objeto pueda escuchar este tipo de eventos deberá implementar la interface
FocusListener, y además deberá añadir el método:
public void addFocusListener (FocusListener fl)
• Los métodos de esta interfaz son:
• public void focusGained( FocusEvent e)
• public void focusLost( FocusEvent e)

32
Experiencia Curricular : Programación Orientada a Objetos Tema: Interfaz Gráfica de Usuario:
Docente: Ms. Zoraida Yanet Vidal Melgarejo Manejo de eventos Página - 16 -
Facultad de Ingeniería
Programa de Estudios: Ingeniería de Computación y Sistemas

Manejo de Eventos: tipos de Listener’s - 33 -

CONTAINERLISTENER
• Los eventos ContainerEvent son disparados o activados después que un componente es agregado o
removido del contenedor.
• Estos eventos son usados sólo para notificar que se presentó la adición o remoción del
componente, no es necesario el ContainerListener para que los componentes puedan ser agregados
o removidos.

33

Manejo de Eventos: tipos de Listener’s - 34 -

• La interface ContainerListener y su correspondiente clase adaptadora ContainerAdapter, presenta


2 métodos:
• void componentAdded(ContainerEvent eve)
• void componentRemoved(ContainerEvent eve)

• La clase ContainerEvent, define 2 métodos útiles:


• Component getChild()
• Component getContainer()

34
Experiencia Curricular : Programación Orientada a Objetos Tema: Interfaz Gráfica de Usuario:
Docente: Ms. Zoraida Yanet Vidal Melgarejo Manejo de eventos Página - 17 -
Facultad de Ingeniería
Programa de Estudios: Ingeniería de Computación y Sistemas

Manejo de Eventos: tipos de Listener’s - 35 -

WINDOWLISTENER
• Los eventos de Ventanas son disparados o activados cuando una ventana es abierta, cerrada,
iconificada (iconified), desconificada (deiconified), activada o desactivada.

• Los usos más comunes, son por ejemplo, usar un WindowListener, cuando el usuario cierra una
ventana, para preguntar si desea salvar los cambios o si es la última ventana cerrada para salir del
programa. Por defecto cuando un usuario cierra una ventana esta se vuelve invisible.

35

Manejo de Eventos: tipos de Listener’s - 36 -

• void windowActivated(WindowEvent e)
Se invoca cuando la ventana está configurada para ser una ventana activa.
• void windowClosed(WindowEvent e)
Se invoca cuando una ventana se ha cerrado cuando se pulsa en una forma de cierre que la misma
contiene.
• void windowClosing(WindowEvent e)
Se invoca cuando el usuario intenta cerrar la ventana desde un método de cierre propio de la ventana.
• void windowDeactivated(WindowEvent e)
Se invoca cuando una ventana ya no está activa.
• void windowDeiconified(WindowEvent e)
Se invoca cuando una ventana se cambia de un minimizado a un estado normal.
• void windowIconified(WindowEvent e)
Se invoca cuando una ventana se cambia de una normal a un estado minimizado.
• void windowOpened(WindowEvent e)
Se invoca la primera vez que una ventana se hace visible.

36
Experiencia Curricular : Programación Orientada a Objetos Tema: Interfaz Gráfica de Usuario:
Docente: Ms. Zoraida Yanet Vidal Melgarejo Manejo de eventos Página - 18 -
Facultad de Ingeniería
Programa de Estudios: Ingeniería de Computación y Sistemas

Clases Adaptadoras - 37 -

• Muchas de las interfaces de escucha de eventos proporcionan dos o más


métodos; MouseListener y MouseMotionListener son 2 ejemplos.
• No siempre es deseable declarar todos los métodos en una interface de
escucha de eventos. Por ejemplo, un programa podría necesitar manejador
MouseClicked de la interfaz MouseListener, o el manejador MouseDragged
de la interfaz MouseMotionListener. La interfaz WindowListener, que
contiene el método WindowClosing especifica 7 eventos manejadores de
eventos.
• Para muchas de las interfaces de escucha de eventos que contienen varios
métodos, el paquete java.awt.event y el paquete javax.swing.event
proporcionan clases adaptadoras de escucha de eventos.

37

Clases Adaptadoras - 38 -

• Una clase adaptadora implementa una interfaz y proporciona una


implementación predeterminada (con un cuerpo vacío para los métodos) de
todos los métodos de la interfaz.
• El programador puede extender la clase adaptadora para heredar la
implementación predeterminada de cada método y, por ende, sobreescribir
el (los) método (s) necesario (s) para el manejo de eventos.
• La implementación predeterminada de cada método en la clase adaptadora
tiene un cuerpo vacío.
• Los adaptadores (adaptar classes) tienen como objetivo evitar la tediosa
tarea de tener que implementar todos los métodos de las interfaces
Listener.

38
Experiencia Curricular : Programación Orientada a Objetos Tema: Interfaz Gráfica de Usuario:
Docente: Ms. Zoraida Yanet Vidal Melgarejo Manejo de eventos Página - 19 -
Facultad de Ingeniería
Programa de Estudios: Ingeniería de Computación y Sistemas

Clases Adaptadoras - 39 -

• Por ello existe una clase adaptadora por cada interface listener que tiene
más de un método: MouseAdapter, WindowAdapter, KeyAdapter,
MouseMotionAdapter, FocusAdapter, ContainerAdapter y
ComponentAdapter, etc.
• Las clases adaptadoras implementan los métodos de la interface
correspondiente como vacíos

39

Clases Adaptadoras - 40 -

• A continuación se muestran las Clases Adaptadoras de eventos y las


interfaces que implementan en el paquete java.awt.event:

CLASE ADAPTADORA DE EVENTOS IMPLEMENTA A LA INTERFAZ

ComponentAdapter ComponentListener
ContainerAdapter ContainerListener
FocusAdapter FocusListener
KeyAdapter KeyListener
MouseAdapter MouseListener
MouseMotionAdapter MouseMotionListener
WindowAdapter WindowListener

40
Experiencia Curricular : Programación Orientada a Objetos Tema: Interfaz Gráfica de Usuario:
Docente: Ms. Zoraida Yanet Vidal Melgarejo Manejo de eventos Página - 20 -
Facultad de Ingeniería
Programa de Estudios: Ingeniería de Computación y Sistemas

Contenedores - 41 -

• Los contenedores son componentes Swing para ubicar otros


componentes. Una ventana es un contenedor.

• Para colocar adecuadamente los componentes, es posible utilizar una


jerarquía de contenedores. La raíz de esa jerarquía siempre será el
contenedor del nivel superior por el marco de la ventana. Pertenecen a
este nivel los contenedores definidos por JFrame, JDialog y JApplet.

41

Contenedores - 42 -

marco
panel
etiqueta

botón

• Se puede ver en la figura, se trata de una ventana con una etiqueta y


un botón; estos componentes pueden estar sobre el contenedor
definido por la propia ventana o en cualquier otro que el
programador puede crear y añadir a esta ventana.

42
Experiencia Curricular : Programación Orientada a Objetos Tema: Interfaz Gráfica de Usuario:
Docente: Ms. Zoraida Yanet Vidal Melgarejo Manejo de eventos Página - 21 -
Facultad de Ingeniería
Programa de Estudios: Ingeniería de Computación y Sistemas

Contenedores - 43 -

• Cada contenedor define un componente denominado panel. Así, un


contenedor de nivel superior en la jerarquía, define un panel
denominado panel raíz. Se trata de un panel de contenido que permite
ubicar, además de controles, otros paneles, formando así una jerarquía
de paneles.

• Para acceder al panel raíz de una ventana, ésta debe invocar a su


método getContentPane.

43

Arquitectura Modelo-Vista-Controlador - 44 -

Swing basa sus componentes en la arquitectura modelo – vista –


controlador (MVC).
• El modelo se corresponde con el estado del componente. El estado de un
objeto lo definen todos sus datos miembro. Por ejemplo, en una lista el
modelo está definido por todos los miembros de la misma; en cambio,
en una caja de texto el modelo está definido por el documento de texto.
• La vista se refiere a cualquier perspectiva de ese modelo. Por ejemplo,
en una lista la vista es la representación gráfica de la misma.
• Y el controlador (manejador de eventos) es el responsable de la
actualización del modelo.

44
Experiencia Curricular : Programación Orientada a Objetos Tema: Interfaz Gráfica de Usuario:
Docente: Ms. Zoraida Yanet Vidal Melgarejo Manejo de eventos Página - 22 -
Facultad de Ingeniería
Programa de Estudios: Ingeniería de Computación y Sistemas

Arquitectura Modelo-Vista-Controlador - 45 -

eventos

controlador

vista modelo

• Tanto la vista como el controlador son combinados en un objeto


denominado delegado. El delegado representa gráficamente el
modelo (trabajo que hace la vista) y transfiere la entrada del usuario
hacia éste (trabajo que hace el controlador).

45

Arquitectura Modelo-Vista-Controlador - 46 -

• Un JComponent puede tener diferentes modelos y delegados. Para


acceder a los modelos se dispone de los métodos setModel y
getModel. Para acceder a los delegados se dispone de los métodos
setUI y getUI.
• Muchos componentes Swing no contenedores tienen modelos; por
ejemplo, un botón (JButton) tiene un modelo (ButtonModel) que
almacena el estado del botón (la tecla para acceso rápido, si está
pulsado, etc.).
• Otros componentes tienen múltiples modelos; por ejemplo, una lista
(JList) utiliza un ListModel para almacenar sus elementos y un
ListSelectionModel para seguir la pista del elemento actualmente
seleccionado.

46
Experiencia Curricular : Programación Orientada a Objetos Tema: Interfaz Gráfica de Usuario:
Docente: Ms. Zoraida Yanet Vidal Melgarejo Manejo de eventos Página - 23 -

También podría gustarte