Академический Документы
Профессиональный Документы
Культура Документы
1. Manejo de eventos.
Comienzo Método 1
Método 2
Recuperar Entregar
siguiente información
evento del evento
Método 3
No Método 4
¿Salir?
Si
Fin
Las GUIs están controladas por eventos, es decir, generan eventos cuando el usuario del programa
interactúa con la GUI. Algunos eventos comunes (interacciones) son mover el ratón, hacer clic con
los botones del ratón, hacer clic en un botón de la pantalla, escribir en un campo de texto, seleccionar
un elemento de un menú, cerrar una ventana, etc. Cuando ocurre una interacción con el usuario, se
envía un mensaje al programa y esa información se almacena en un objeto de una clase que extiende a
AWTEvent. (Ver Figura Nº 2).
Object ActionEvent
AdjustmentEvent
EventObject
ContainerEvent
ItemEvent
AWTEvent FocusEvent
TextEvent
PaintEvent
ComponentEvent
WindowEvent
InputEvent
KeyEvent MouseEvent
MouseWheelEvent
El mecanismo de manejo de eventos consta de tres partes: el origen del evento, el objeto del evento y el
componente de escucha del evento. El origen del evento es el componente de la GUI específico con el cual
interactúa el usuario. El objeto del evento encapsula la información acerca del evento que ocurrió que
incluye una referencia al origen del evento y cualquier información específica de ese evento que
pueda ser requerida por el componente de escucha del evento, para poder manejarlo. El componente
de escucha del evento es un objeto que recibe la notificación del origen del evento cuando éste
ocurre; en efecto, “escucha” a la espera de un evento y se ejecuta en respuesta a ese evento.
<<interfaz>> ActionListener
<<interfaz>> AdjustmentListener
<<interfaz>> ComponentListener
<<interfaz>>
EventListener <<interfaz>> ContainerListener
<<interfaz>> FocusListener
<<interfaz>> ItemListener
<<interfaz>> KeyListener
<<interfaz>> MouseListener
<<interfaz>> MouseMotionListener
<<interfaz>> TextListener
<<interfaz>> WindowListener
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). Un componente de escucha para un evento de la GUI es un
objeto de una clase que implementa a una o más de las interfaces de componentes de escucha de
eventos de los paquetes java.awt.event y javax.swing.event. (Ver Figura Nº 3).
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.
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).
Método
(respuesta al evento)
Una aplicación que muestra una interfaz gráfica cuando se ejecuta, no es más que un objeto de una
clase derivada de JFrame. Dicha aplicación, es una clase que hereda todos los atributos y métodos de
su clase padre, y además especifica sus propios métodos y atributos así como el manejador de
eventos.
Clase Padre
JFrame
Aplicación
Atributos
de eventos
Manejador
Eventos
Métodos
Todos los componentes Swing son objetos de clases derivadas de la clase JComponent, que a su vez
se deriva de la clase java.awt.Component, lo que pone de manifiesto que Swing se deriva de AWT.
Para combinar éstos formando una interfaz gráfica, Swing provee, además, los contenedores de alto
nivel JWindow, JFrame, JDialog y JApplet que se puede observar en la jerarquía de clases mostrada
a continuación:
java.lang.Object
o java.awt.Component
java.awt.Container
javax.swing.JComponent
java.awt.Panel
- java.applet.Applet
javax.swing.JApplet
java.at.Window
- java.awt.Dialog
javax.swing.JDialog
- java.awt.Frame
javax.swing.JFrame
- javax.swing.JWindow
JWindow es una ventana sin barra de título y sin los botones que permiten su manipulación, que
puede visualizarse en cualquier sitio del escritorio.
JFrame es una ventana con barra de título y con los botones que permiten su manipulación, que
puede visualizarse en cualquier sitio del escritorio.
JDialog permite visualizar una caja de diálogo.
JApplet permite crear un applet swing: programa que visualiza una interfaz gráfica en el contexto
de una página Web.
El hecho de que Swing se derive de AWT permite que los componentes Swing y los AWT se puedan
mezclar en un mismo programa, aunque generalmente no se recomienda, porque algunas diferencias
como las indicadas a continuación lo desaconsejan:
Todos los componentes AWT son pesados, y la mayoría de los componentes Swing son ligeros.
Un componente ligero puede tener píxeles transparentes y además, no tienen por qué ser
rectangulares. Un componente pesado es opaco y siempre es rectangular.
Cuando un componente ligero se solapa con un componente pesado, el componente pesado
aparecerá encima.
JTextField. Caja de texto de una sola línea, componente que permite editar una
única línea de texto normal.
JPasswordField. Caja utilizada para introducir una contraseña. Todos los
caracteres escritos son reemplazados por otro carácter, generalmente un *.
JToolBar. Barra de herramientas. Normalmente, los botones de la barra de herramientas
son una alternativa para ejecutar de forma rápida las órdenes más utilizadas de los menús
de una barra de menús.
JToolTip. Componente utilizado para visualizar mensajes breves asociados con otros
componentes.
JTree. Permite visualizar un conjunto de datos utilizando una vista en forma de árbol.
JViewport. Vista de datos (cuando utilizamos barras de desplazamiento para desplazar la
información, lo que se mueve es el objeto JViewport).
Java proporciona varios manejadores de eventos, cada uno de los cuales maneja un tipo particular de
eventos. La Figura Nº 3 muestra los tipos de eventos más comunes.
ComponentListener. Permite manejar los eventos de tipo ComponentEvent generados por los
componentes cuando cambian su tamaño posición o visibilidad.
FocusListener. Permite manejar los eventos de tipo FocusEvent generados por los
componentes cuando ganan o pierden el foco. Cuando un componente gana el foco está en
condiciones de recibir entradas desde el teclado.
KeyListener. Permite manejar los eventos de tipo KeyEvent generados por el componente que
tiene el foco, cuando recibe entradas desde el teclado.
MouseListener. Permite manejar los eventos de tipo MouseEvent generados por los
componentes cuando el cursor del ratón entra en su área o sale de ella, y cuando el usuario pulsa
y suelta un botón del ratón.
MouseMotionListener. Permite manejar los eventos de tipo MouseEvent generados por un
componente cuando el ratón se mueve sobre él (el adaptador MouseInputAdapter implementa
tanto MouseListener como MouseMotionListener).
Otros manejadores de eventos soportados por sólo algunos componentes son los siguientes:
Los objetos fundamentales que intervienen en una aplicación en ejecución son: la ventana principal o
contenedor de nivel superior (objeto JFrame), un contenedor del nivel intermedio (objeto JPanel) y
los componentes atómicos u objetos no destinados a contener a otros componentes (por ejemplo, un
objeto JLabel). Estos componentes están dispuestos jerárquicamente:
Cuando se crea un objeto JFrame también se crea automáticamente un panel raíz (objeto
JRootPane). Este panel define dos objetos:
Un panel transparente, oculto por defecto. Cuando se hace visible, es como un cristal por
encima de todos los componentes. Es útil cuando se necesita interceptar algunos eventos, o
pintar un área ocupada por varios componentes.
Un panel de capas. Se trata de un contenedor con profundidad que permite ubicar componentes
que pueden aparecer solapados pero a diferentes niveles de profundidad. Esto es útil, entre otras
cosas, para visualizar menús desplegables encima de otros componentes. El panel raíz coloca en
este contenedor, su panel de contenido y, opcionalmente, la barra de menús. En el panel de
contenido es donde se colocan todos los componentes visibles del panel raíz excepto la barra de
menús.