SlideShare una empresa de Scribd logo
1 de 11
Descargar para leer sin conexión
ITSON Manuel Domitsu Kono
Tema 7
GUI, Swing y Java Beans
Interfaz de Usuario Gráfica
Para hacer más amigable la interacción con el usuario, actualmente la mayoría de los
programas comerciales utilizan una interfaz de usuario gráfica (GUI).
El ejemplo más conocido es el sistema operativo Windows y sus aplicaciones. Sin
embargo no fue el primero ni el único en usar una GUI.
Paquetes de Java para GUIs
Para facilitarnos la programación de las GUIS, Java nos provee de un conjunto de
paquetes:
• java.awt: Contiene todas las clases para crear interfaces de usuario y para
dibujar gráficas e imágenes.
• javax.swing: Provee un conjunto de componentes ligeros (escritos
completamente en Java) que, en lo máximo posible, trabajan de la misma
manera en todas las plataformas.
• java.awt.event: Provee interfaces y clases para manejar los diferentes tipos de
eventos disparados por los componentes AWT.
Contenedores
Los diferentes componentes que forman la interfaz gráfica de una aplicación: Etiquetas,
botones, cajas de texto, menús, etc. deben agruparse en otros componentes llamados
contenedores. El paquete javax.swing tiene los siguientes contenedores para agrupar
componentes.
• JFrame: Permite crear una ventana de una aplicación. Posee título y puede
tener una barra de menús, barra de herramienta, barras de desplazamiento, su
propio cursor, botones para maximizar, minimizar, etc.
• JDialog: Permite crear cuadros de diálogo.
• JPanel: Permite agrupar componentes. Podemos tener paneles dentro de
paneles. Tienen un manejador de diseño.
224 GUI, Swing y Java Beans
ITSON Manuel Domitsu Kono
Manejadores de Diseño
Un manejador de diseño es una clase que define la forma en que se acomodan los
componentes insertados en un contenedor. El paquete javax.swing tiene los siguientes
manejadores de diseño para acomodar componentes en un contenedor.
• FlowLayout: Coloca los componentes de izquierda a derecha por filas, con las
filas ordenadas de arriba abajo.
• BorderLayout: El contenedor se divide en cinco regiones: North, East, West,
South y Center.
• GridLayout: Acomoda a los componentes en filas y columnas con todas las
regiones del mismo tamaño.
• GridBagLayout: Acomoda a los componentes en filas y columnas que no
necesariamente tienen la misma altura y ancho.
• CardLayout: Cada uno de los componentes es tan grande como el contenedor.
Sólo un componente es visible.
Componentes Activos
Los componentes activos del paquete Swing de Java permiten que el usuario interactúe
con el programa:
• JButton: Implementa un botón.
• JCheckBox: Implementa una casilla de verificación.
• JList: Una componente que permite que el usuario seleccione uno o más
objetos de una lista.
Componentes de Texto
Hay cuatro componentes que pueden usarse para el despliegue y captura de textos:
• JLabel: Despliega una línea de texto en la pantalla.
• JTextField: Un cuadro que contiene una línea de texto. El usuario puede
modificarla.
• JPassword: Un cuadro que permite la captura de una contraseña. No hace eco
de los caracteres. En lugar despliega un carácter dado.
• JTextArea: Un cuadro que contiene una o más líneas de texto. El usuario puede
modificarlas.
Menús
El paquete java.swing de Java contiene una serie de clases que permiten crear
diferentes menús:
Tema 7 GUI, Swing y Java Beans 225
ITSON Manuel Domitsu Kono
• JMenuBar: Permite crear una barra de menús. Contiene un conjunto de objetos
de tipo JMenu y debe ser parte de una ventana, JFrame.
• JMenu: Permite implementar menús. Contiene una colección de objetos
JMenuItem y separadores.
• JMenuItem: Permite implementar las opciones de un menú.
• Un Jmenu también puede ser un JMenuItem permitiendo menús jerárquicos.
Programación por Eventos
En la programación orientada por eventos el flujo de un programa no sigue una
secuencia de inicio a fin sino que está controlada por eventos externos.
Los programas con una interfaz de usuario gráfica por lo general son controlados por
eventos externos como hacer un clic en una opción de un menú o en un botón,
arrastrar el ratón, escribir en un campo de texto, etc.
Modelo de Eventos de Java
Un programa en Java maneja los eventos externos de la siguiente manera:
Toda componente puede reaccionar ante un evento externo generando una notificación
llamada evento. Se dice que el componente puede ser la fuente de un evento.
Toda clase puede recibir la notificación generada por un componente. Se dice que la
clase es una oyente del evento.
Un componente que genera eventos, mantiene una lista de las oyentes interesadas en
saber cuando ocurre el evento
El evento generado por un componente sólo se envía a las oyentes registradas. Las
que están en la lista del componente.
Eventos
En Java, un evento es una subclase de la clase AWTEvent que se encuentran en el
paquete java.awt.event.
Un objeto de tipo evento contiene la información del evento externo que lo generó
Cada componente genera uno o más tipos de eventos
226 GUI, Swing y Java Beans
ITSON Manuel Domitsu Kono
Oyentes
Para que una clase pueda ser oyente de un evento debe implementar una o más
interfaces oyente.
Una interfaz oyente declara uno o más métodos oyentes que deben ser implementados
por la clase oyente.
Cuando un componente genera un evento, invoca a un método oyente de la clase
oyente y le pasa como parámetro el evento.
El método oyente contiene el código que maneja al evento generado por el
componente.
Tabla 7.1 Eventos, Componentes y Oyentes
Clase de
Evento
Componentes que
lo Generan
Significado Interfaz Oyente Métodos Oyentes
ActionEvent
JButton
JList
JMenuItem
JTextField
El usuario hace clic
sobre el botón.
El usuario hace doble
clic sobre la opción
de la lista.
El usuario selecciona
una opción del menú.
El usuario terminó
de editar el texto.
ActionListener actionPerformed()
FocusEvent
JComponent El componente ganó
o perdió el foco.
FocusListener
focusGained()
focusLost()
ItemEvent
JCheckbox
JCheckboxMenuItem
JChoice
JList.
El usuario selecciona
o deselecciona una
opción.
ItemListener itemStateChanged()
KeyEvent JComponent
El usuario presionó o
soltó una tecla.
KeyListener
keyPressed()
keyReleased()
keyTyped()
MouseEvent JComponent
El usuario presionó o
soltó el botón del
ratón.
El ratón entró o salió
del componente, o el
usuario movió o
arrastró al ratón.
MouseListener
mouseClicked()
mouseEntered()
mouseExited()
mousePressed()
mouseReleased()
MouseMotionListener
mouseDragged()
mouseMoved()
TextEvent
JTextField
JTextArea
El usuario cambió el
texto
TextListener textValueChanged()
Tema 7 GUI, Swing y Java Beans 227
ITSON Manuel Domitsu Kono
Ejemplo sobre una Interfaz de Usuario Gráfica
Para el ejemplo de la aplicación del amante de la música y el cine, AmanteMusica, se
tiene el diseño de la interfaz de usuario gráfica mostrada en la figura 7.1.
Figura 7.1. Diagrama de clases de la interfaz gráfica de la aplicación Amante de la
Música
Interfaz de Usuario de la Aplicación AmanteMusica
La figura 7.2 muestra la ventana principal de la aplicación AmanteMusica, con su barra
de menús.
La figura 7.3 muestra la selección de la opción para agregar una canción al catálogo de
canciones.
228 GUI, Swing y Java Beans
ITSON Manuel Domitsu Kono
Figura 7.2. Ventana principal de la aplicación AmanteMusica
Figura 7.3. Selección de la opción de agregar una canción
Tema 7 GUI, Swing y Java Beans 229
ITSON Manuel Domitsu Kono
Para agregar una canción, primero se captura la clave de una canción utilizando el
método estático showInputDialog() de la clase JOptionPane que permite capturar
una línea de texto utilizando un cuadro de diálogo como el mostrado en la figura 7.4:
Figura 7.4 Cuadro de diálogo para capturar la clave de una canción.
A continuación se busca la canción de la clave en el catálogo de canciones. Si la
canción no existe en el catálogo de canciones, se despliega el cuadro de diálogo
mostrado en la figura 7.5 para capturar el resto de los datos de la canción:
Figura 7.5. Cuadro de diálogo DlgCancion para capturar los datos de una nueva
canción.
Después de obtener los datos de una canción, el programa la agrega al catálogo de
canciones y posteriormente despliega una tabla con las canciones del catálogo, figura
7.6.
Si la canción ya existe en el catálogo de canciones, el programa despliega en un
cuadro de diálogo los datos de la canción existente, figura 7.7.
230 GUI, Swing y Java Beans
ITSON Manuel Domitsu Kono
Figura 7.6. Listado de las calificaciones en el catálogo de calificaciones
Figura 7.7 Cuadro de diálogo DlgCancion para mostrar los datos de una canción
existente.
Para actualizar los datos de una canción, primero se captura la clave de una canción
en forma similar a cuando se quiere agregar una canción. A continuación se busca la
canción de la clave en el catálogo de canciones. Si la canción existe en el catálogo de
canciones, se despliega el cuadro de diálogo mostrado en la figura 7.8 para modificar
los datos de la canción:
Tema 7 GUI, Swing y Java Beans 231
ITSON Manuel Domitsu Kono
Figura 7.8. Cuadro de diálogo DlgCancion para modificar los datos de una
canción.
Después de modificar los datos de una canción, el programa la actualiza en el catálogo
de canciones y posteriormente despliega una tabla con las canciones del catálogo.
Si la canción no existe en el catálogo de canciones, el programa despliega un cuadro
de diálogo con un mensaje de error, utilizando el método estático show
showMessageDialog() de la clase JOptionPane que permite despliega un mensaje
utilizando un cuadro de diálogo como el mostrado en la figura 7.9:
Figura 7.9 Cuadro de diálogo con mensaje de error.
Para eliminar los datos de una canción, primero se captura la clave de una canción en
forma similar a cuando se quiere agregar una canción. A continuación se busca la
canción de la clave en el catálogo de canciones. Si la canción existe en el catálogo de
canciones, se despliega el cuadro de diálogo mostrado en la figura 7.10 para confirmar
la operación.
Después de eliminar una canción, el programa despliega una tabla con las canciones
del catálogo.
Si la canción no existe en el catálogo de canciones, el programa despliega un cuadro
de diálogo con un mensaje de error similar al de la figura 7.9.
232 GUI, Swing y Java Beans
ITSON Manuel Domitsu Kono
Figura 7.10. Cuadro de diálogo DlgCancion para confirmar la eliminación de una
canción
Las figura 7.11 muestra las opciones de las diferentes consultas que se pueden realizar
en el catálogo de canciones.
Figura 7.14. Selección de la opción de consultar todas las canciones
Cada consulta produce una tabla como la mostrada en la figura 7.6.
Tema 7 GUI, Swing y Java Beans 233
ITSON Manuel Domitsu Kono
Para capturar, editar o desplegar los datos de un periodo se emplea el cuadro de
diálogo mostrado en la figura 7.12:
Figura 7.15. Cuadro de Diálogo DlgPeriodo

Más contenido relacionado

La actualidad más candente

Introducción a Swing
Introducción a SwingIntroducción a Swing
Introducción a Swingmrojas_unitec
 
Programación java - Diseño de Menús y submenús.
Programación java - Diseño de Menús y submenús.Programación java - Diseño de Menús y submenús.
Programación java - Diseño de Menús y submenús.Jean Tapuy
 
Guis en java-1pp_2011_
Guis en java-1pp_2011_Guis en java-1pp_2011_
Guis en java-1pp_2011_Ricardo Garcia
 
Layouts - Java
Layouts - JavaLayouts - Java
Layouts - Javanjca01
 
Lps 15 gu-iconswing
Lps 15 gu-iconswingLps 15 gu-iconswing
Lps 15 gu-iconswingjbersosa
 
Manual java swing
Manual java swingManual java swing
Manual java swingRobert Wolf
 
Mi primera-hora-con-eclipse
Mi primera-hora-con-eclipseMi primera-hora-con-eclipse
Mi primera-hora-con-eclipseariannalizeeth
 
Ccc mppxpmb
Ccc mppxpmbCcc mppxpmb
Ccc mppxpmbLuis St
 
Unidad 2 tópicos avanzados de programacion
Unidad 2 tópicos avanzados de programacionUnidad 2 tópicos avanzados de programacion
Unidad 2 tópicos avanzados de programacionIrving Che
 
Ejemplo de aplicación Android "Hola mundo", Botones, Intents
Ejemplo de aplicación Android "Hola mundo", Botones, IntentsEjemplo de aplicación Android "Hola mundo", Botones, Intents
Ejemplo de aplicación Android "Hola mundo", Botones, IntentsNelson Samir Ríos Ramos
 
manual-de-intouch
manual-de-intouchmanual-de-intouch
manual-de-intouchselcoltga
 
Controles
ControlesControles
Controlesggzhack
 

La actualidad más candente (20)

Introducción a Swing
Introducción a SwingIntroducción a Swing
Introducción a Swing
 
Menus y-submenus
Menus y-submenusMenus y-submenus
Menus y-submenus
 
Programación java - Diseño de Menús y submenús.
Programación java - Diseño de Menús y submenús.Programación java - Diseño de Menús y submenús.
Programación java - Diseño de Menús y submenús.
 
Java
JavaJava
Java
 
DISEÑO DE MENUS Y SUBMENUS
 DISEÑO DE MENUS Y SUBMENUS DISEÑO DE MENUS Y SUBMENUS
DISEÑO DE MENUS Y SUBMENUS
 
Guis en java-1pp_2011_
Guis en java-1pp_2011_Guis en java-1pp_2011_
Guis en java-1pp_2011_
 
interfaz grafica
interfaz graficainterfaz grafica
interfaz grafica
 
Layouts - Java
Layouts - JavaLayouts - Java
Layouts - Java
 
Elementos Swing
Elementos SwingElementos Swing
Elementos Swing
 
Lps 15 gu-iconswing
Lps 15 gu-iconswingLps 15 gu-iconswing
Lps 15 gu-iconswing
 
Power integradora
Power integradoraPower integradora
Power integradora
 
Manual java swing
Manual java swingManual java swing
Manual java swing
 
Mi primera-hora-con-eclipse
Mi primera-hora-con-eclipseMi primera-hora-con-eclipse
Mi primera-hora-con-eclipse
 
Ccc mppxpmb
Ccc mppxpmbCcc mppxpmb
Ccc mppxpmb
 
Ccc mppxpmb
Ccc mppxpmbCcc mppxpmb
Ccc mppxpmb
 
Unidad 2 tópicos avanzados de programacion
Unidad 2 tópicos avanzados de programacionUnidad 2 tópicos avanzados de programacion
Unidad 2 tópicos avanzados de programacion
 
Ejemplo de aplicación Android "Hola mundo", Botones, Intents
Ejemplo de aplicación Android "Hola mundo", Botones, IntentsEjemplo de aplicación Android "Hola mundo", Botones, Intents
Ejemplo de aplicación Android "Hola mundo", Botones, Intents
 
manual-de-intouch
manual-de-intouchmanual-de-intouch
manual-de-intouch
 
Controles
ControlesControles
Controles
 
oop
oopoop
oop
 

Similar a Tema 7 gui, swing y java beans por gio

Tema 6 gui, swing y java beans por gio
Tema 6   gui, swing y java beans por gioTema 6   gui, swing y java beans por gio
Tema 6 gui, swing y java beans por gioRobert Wolf
 
Java 120706083911-phpapp01
Java 120706083911-phpapp01Java 120706083911-phpapp01
Java 120706083911-phpapp01Ricardo Garcia
 
Guis_en_java_6pp.pdf
Guis_en_java_6pp.pdfGuis_en_java_6pp.pdf
Guis_en_java_6pp.pdfAnaLpez275
 
Objetivo interfas a codigo
Objetivo interfas a codigoObjetivo interfas a codigo
Objetivo interfas a codigoRobert Wolf
 
Miswing 110511215936-phpapp01
Miswing 110511215936-phpapp01Miswing 110511215936-phpapp01
Miswing 110511215936-phpapp01Ricardo Garcia
 
Guia practicaiuprg3
Guia practicaiuprg3Guia practicaiuprg3
Guia practicaiuprg3alex sgarcia
 
Tema 8 desarrollo de aplicaciones en java por gio
Tema 8   desarrollo de aplicaciones en java por gioTema 8   desarrollo de aplicaciones en java por gio
Tema 8 desarrollo de aplicaciones en java por gioRobert Wolf
 
Tema 7 desarrollo de aplicaciones en java - lsia por gio
Tema 7   desarrollo de aplicaciones en java - lsia por gioTema 7   desarrollo de aplicaciones en java - lsia por gio
Tema 7 desarrollo de aplicaciones en java - lsia por gioRobert Wolf
 
Controles de Interfaz Parte Practica.pdf
Controles de Interfaz Parte Practica.pdfControles de Interfaz Parte Practica.pdf
Controles de Interfaz Parte Practica.pdfJUANCARLOSCUMBICUSBR
 
Jyoc java-cap18 swing y java fx
Jyoc java-cap18 swing y java fxJyoc java-cap18 swing y java fx
Jyoc java-cap18 swing y java fxJyoc X
 

Similar a Tema 7 gui, swing y java beans por gio (20)

Tema 6 gui, swing y java beans por gio
Tema 6   gui, swing y java beans por gioTema 6   gui, swing y java beans por gio
Tema 6 gui, swing y java beans por gio
 
Java 120706083911-phpapp01
Java 120706083911-phpapp01Java 120706083911-phpapp01
Java 120706083911-phpapp01
 
Clase swing
Clase swingClase swing
Clase swing
 
Taller 1 7
Taller 1 7Taller 1 7
Taller 1 7
 
Swin01
Swin01Swin01
Swin01
 
Guis_en_java_6pp.pdf
Guis_en_java_6pp.pdfGuis_en_java_6pp.pdf
Guis_en_java_6pp.pdf
 
Objetivo interfas a codigo
Objetivo interfas a codigoObjetivo interfas a codigo
Objetivo interfas a codigo
 
Miswing 110511215936-phpapp01
Miswing 110511215936-phpapp01Miswing 110511215936-phpapp01
Miswing 110511215936-phpapp01
 
Guia practicaiuprg3
Guia practicaiuprg3Guia practicaiuprg3
Guia practicaiuprg3
 
Tema6resumido
Tema6resumidoTema6resumido
Tema6resumido
 
Tema 8 desarrollo de aplicaciones en java por gio
Tema 8   desarrollo de aplicaciones en java por gioTema 8   desarrollo de aplicaciones en java por gio
Tema 8 desarrollo de aplicaciones en java por gio
 
Clase 5 JAVA 2012
Clase 5 JAVA 2012Clase 5 JAVA 2012
Clase 5 JAVA 2012
 
Clase swing
Clase swingClase swing
Clase swing
 
Presentation Oop
Presentation OopPresentation Oop
Presentation Oop
 
Interfaces graficas(1)
Interfaces graficas(1)Interfaces graficas(1)
Interfaces graficas(1)
 
Controles swing
Controles swingControles swing
Controles swing
 
Swing, awt y JOptionPane de java
Swing, awt y JOptionPane de java Swing, awt y JOptionPane de java
Swing, awt y JOptionPane de java
 
Tema 7 desarrollo de aplicaciones en java - lsia por gio
Tema 7   desarrollo de aplicaciones en java - lsia por gioTema 7   desarrollo de aplicaciones en java - lsia por gio
Tema 7 desarrollo de aplicaciones en java - lsia por gio
 
Controles de Interfaz Parte Practica.pdf
Controles de Interfaz Parte Practica.pdfControles de Interfaz Parte Practica.pdf
Controles de Interfaz Parte Practica.pdf
 
Jyoc java-cap18 swing y java fx
Jyoc java-cap18 swing y java fxJyoc java-cap18 swing y java fx
Jyoc java-cap18 swing y java fx
 

Más de Robert Wolf

Tema 16 acceso a base de datos usando jpa por gio
Tema 16   acceso a base de datos usando jpa por gioTema 16   acceso a base de datos usando jpa por gio
Tema 16 acceso a base de datos usando jpa por gioRobert Wolf
 
Tema 15 aplicaciones de dos capas por gio
Tema 15   aplicaciones de dos capas por gioTema 15   aplicaciones de dos capas por gio
Tema 15 aplicaciones de dos capas por gioRobert Wolf
 
Tema 14 imágenes en java por gio
Tema 14   imágenes en java por gioTema 14   imágenes en java por gio
Tema 14 imágenes en java por gioRobert Wolf
 
Tema 13 gráficas en java por gio
Tema 13   gráficas en java por gioTema 13   gráficas en java por gio
Tema 13 gráficas en java por gioRobert Wolf
 
Tema 12 hilos en java por gio
Tema 12   hilos en java por gioTema 12   hilos en java por gio
Tema 12 hilos en java por gioRobert Wolf
 
Tema 11 expresiones regulares en java por gio
Tema 11   expresiones regulares en java por gioTema 11   expresiones regulares en java por gio
Tema 11 expresiones regulares en java por gioRobert Wolf
 
Tema 10 clase abstractas e interfaz
Tema 10 clase abstractas e interfazTema 10 clase abstractas e interfaz
Tema 10 clase abstractas e interfazRobert Wolf
 
Tema 10 entrada y salida por gio
Tema 10   entrada y salida por gioTema 10   entrada y salida por gio
Tema 10 entrada y salida por gioRobert Wolf
 
Tema 9 pruebas unitarias por gio
Tema 9   pruebas unitarias por gioTema 9   pruebas unitarias por gio
Tema 9 pruebas unitarias por gioRobert Wolf
 
Tema 9 aplicaciones de dos capas por gio
Tema 9   aplicaciones de dos capas por gioTema 9   aplicaciones de dos capas por gio
Tema 9 aplicaciones de dos capas por gioRobert Wolf
 
Tema 8 entrada y salida por gio
Tema 8   entrada y salida por gioTema 8   entrada y salida por gio
Tema 8 entrada y salida por gioRobert Wolf
 
Tema 6 colecciones por gio
Tema 6   colecciones por gioTema 6   colecciones por gio
Tema 6 colecciones por gioRobert Wolf
 
Tema 5 arreglos y cadenas por gio
Tema 5   arreglos y cadenas por gioTema 5   arreglos y cadenas por gio
Tema 5 arreglos y cadenas por gioRobert Wolf
 
Tema 5 arreglos y cadenas - lsia por gio
Tema 5   arreglos y cadenas - lsia por gioTema 5   arreglos y cadenas - lsia por gio
Tema 5 arreglos y cadenas - lsia por gioRobert Wolf
 
Tema 4 excepciones por gio
Tema 4   excepciones por gioTema 4   excepciones por gio
Tema 4 excepciones por gioRobert Wolf
 
Tema 3 sentencias de control de java por gio
Tema 3   sentencias de control de java por gioTema 3   sentencias de control de java por gio
Tema 3 sentencias de control de java por gioRobert Wolf
 
Tema 2 tipos de datos y expresiones en java por gio
Tema 2   tipos de datos y expresiones en java por gioTema 2   tipos de datos y expresiones en java por gio
Tema 2 tipos de datos y expresiones en java por gioRobert Wolf
 
Tema 1 programación orientada a objetos por gio
Tema 1   programación orientada a objetos por gioTema 1   programación orientada a objetos por gio
Tema 1 programación orientada a objetos por gioRobert Wolf
 

Más de Robert Wolf (20)

Tema4 herencia
Tema4 herenciaTema4 herencia
Tema4 herencia
 
Tema 6
Tema 6Tema 6
Tema 6
 
Tema 16 acceso a base de datos usando jpa por gio
Tema 16   acceso a base de datos usando jpa por gioTema 16   acceso a base de datos usando jpa por gio
Tema 16 acceso a base de datos usando jpa por gio
 
Tema 15 aplicaciones de dos capas por gio
Tema 15   aplicaciones de dos capas por gioTema 15   aplicaciones de dos capas por gio
Tema 15 aplicaciones de dos capas por gio
 
Tema 14 imágenes en java por gio
Tema 14   imágenes en java por gioTema 14   imágenes en java por gio
Tema 14 imágenes en java por gio
 
Tema 13 gráficas en java por gio
Tema 13   gráficas en java por gioTema 13   gráficas en java por gio
Tema 13 gráficas en java por gio
 
Tema 12 hilos en java por gio
Tema 12   hilos en java por gioTema 12   hilos en java por gio
Tema 12 hilos en java por gio
 
Tema 11 expresiones regulares en java por gio
Tema 11   expresiones regulares en java por gioTema 11   expresiones regulares en java por gio
Tema 11 expresiones regulares en java por gio
 
Tema 10 clase abstractas e interfaz
Tema 10 clase abstractas e interfazTema 10 clase abstractas e interfaz
Tema 10 clase abstractas e interfaz
 
Tema 10 entrada y salida por gio
Tema 10   entrada y salida por gioTema 10   entrada y salida por gio
Tema 10 entrada y salida por gio
 
Tema 9 pruebas unitarias por gio
Tema 9   pruebas unitarias por gioTema 9   pruebas unitarias por gio
Tema 9 pruebas unitarias por gio
 
Tema 9 aplicaciones de dos capas por gio
Tema 9   aplicaciones de dos capas por gioTema 9   aplicaciones de dos capas por gio
Tema 9 aplicaciones de dos capas por gio
 
Tema 8 entrada y salida por gio
Tema 8   entrada y salida por gioTema 8   entrada y salida por gio
Tema 8 entrada y salida por gio
 
Tema 6 colecciones por gio
Tema 6   colecciones por gioTema 6   colecciones por gio
Tema 6 colecciones por gio
 
Tema 5 arreglos y cadenas por gio
Tema 5   arreglos y cadenas por gioTema 5   arreglos y cadenas por gio
Tema 5 arreglos y cadenas por gio
 
Tema 5 arreglos y cadenas - lsia por gio
Tema 5   arreglos y cadenas - lsia por gioTema 5   arreglos y cadenas - lsia por gio
Tema 5 arreglos y cadenas - lsia por gio
 
Tema 4 excepciones por gio
Tema 4   excepciones por gioTema 4   excepciones por gio
Tema 4 excepciones por gio
 
Tema 3 sentencias de control de java por gio
Tema 3   sentencias de control de java por gioTema 3   sentencias de control de java por gio
Tema 3 sentencias de control de java por gio
 
Tema 2 tipos de datos y expresiones en java por gio
Tema 2   tipos de datos y expresiones en java por gioTema 2   tipos de datos y expresiones en java por gio
Tema 2 tipos de datos y expresiones en java por gio
 
Tema 1 programación orientada a objetos por gio
Tema 1   programación orientada a objetos por gioTema 1   programación orientada a objetos por gio
Tema 1 programación orientada a objetos por gio
 

Tema 7 gui, swing y java beans por gio

  • 1. ITSON Manuel Domitsu Kono Tema 7 GUI, Swing y Java Beans Interfaz de Usuario Gráfica Para hacer más amigable la interacción con el usuario, actualmente la mayoría de los programas comerciales utilizan una interfaz de usuario gráfica (GUI). El ejemplo más conocido es el sistema operativo Windows y sus aplicaciones. Sin embargo no fue el primero ni el único en usar una GUI. Paquetes de Java para GUIs Para facilitarnos la programación de las GUIS, Java nos provee de un conjunto de paquetes: • java.awt: Contiene todas las clases para crear interfaces de usuario y para dibujar gráficas e imágenes. • javax.swing: Provee un conjunto de componentes ligeros (escritos completamente en Java) que, en lo máximo posible, trabajan de la misma manera en todas las plataformas. • java.awt.event: Provee interfaces y clases para manejar los diferentes tipos de eventos disparados por los componentes AWT. Contenedores Los diferentes componentes que forman la interfaz gráfica de una aplicación: Etiquetas, botones, cajas de texto, menús, etc. deben agruparse en otros componentes llamados contenedores. El paquete javax.swing tiene los siguientes contenedores para agrupar componentes. • JFrame: Permite crear una ventana de una aplicación. Posee título y puede tener una barra de menús, barra de herramienta, barras de desplazamiento, su propio cursor, botones para maximizar, minimizar, etc. • JDialog: Permite crear cuadros de diálogo. • JPanel: Permite agrupar componentes. Podemos tener paneles dentro de paneles. Tienen un manejador de diseño.
  • 2. 224 GUI, Swing y Java Beans ITSON Manuel Domitsu Kono Manejadores de Diseño Un manejador de diseño es una clase que define la forma en que se acomodan los componentes insertados en un contenedor. El paquete javax.swing tiene los siguientes manejadores de diseño para acomodar componentes en un contenedor. • FlowLayout: Coloca los componentes de izquierda a derecha por filas, con las filas ordenadas de arriba abajo. • BorderLayout: El contenedor se divide en cinco regiones: North, East, West, South y Center. • GridLayout: Acomoda a los componentes en filas y columnas con todas las regiones del mismo tamaño. • GridBagLayout: Acomoda a los componentes en filas y columnas que no necesariamente tienen la misma altura y ancho. • CardLayout: Cada uno de los componentes es tan grande como el contenedor. Sólo un componente es visible. Componentes Activos Los componentes activos del paquete Swing de Java permiten que el usuario interactúe con el programa: • JButton: Implementa un botón. • JCheckBox: Implementa una casilla de verificación. • JList: Una componente que permite que el usuario seleccione uno o más objetos de una lista. Componentes de Texto Hay cuatro componentes que pueden usarse para el despliegue y captura de textos: • JLabel: Despliega una línea de texto en la pantalla. • JTextField: Un cuadro que contiene una línea de texto. El usuario puede modificarla. • JPassword: Un cuadro que permite la captura de una contraseña. No hace eco de los caracteres. En lugar despliega un carácter dado. • JTextArea: Un cuadro que contiene una o más líneas de texto. El usuario puede modificarlas. Menús El paquete java.swing de Java contiene una serie de clases que permiten crear diferentes menús:
  • 3. Tema 7 GUI, Swing y Java Beans 225 ITSON Manuel Domitsu Kono • JMenuBar: Permite crear una barra de menús. Contiene un conjunto de objetos de tipo JMenu y debe ser parte de una ventana, JFrame. • JMenu: Permite implementar menús. Contiene una colección de objetos JMenuItem y separadores. • JMenuItem: Permite implementar las opciones de un menú. • Un Jmenu también puede ser un JMenuItem permitiendo menús jerárquicos. Programación por Eventos En la programación orientada por eventos el flujo de un programa no sigue una secuencia de inicio a fin sino que está controlada por eventos externos. Los programas con una interfaz de usuario gráfica por lo general son controlados por eventos externos como hacer un clic en una opción de un menú o en un botón, arrastrar el ratón, escribir en un campo de texto, etc. Modelo de Eventos de Java Un programa en Java maneja los eventos externos de la siguiente manera: Toda componente puede reaccionar ante un evento externo generando una notificación llamada evento. Se dice que el componente puede ser la fuente de un evento. Toda clase puede recibir la notificación generada por un componente. Se dice que la clase es una oyente del evento. Un componente que genera eventos, mantiene una lista de las oyentes interesadas en saber cuando ocurre el evento El evento generado por un componente sólo se envía a las oyentes registradas. Las que están en la lista del componente. Eventos En Java, un evento es una subclase de la clase AWTEvent que se encuentran en el paquete java.awt.event. Un objeto de tipo evento contiene la información del evento externo que lo generó Cada componente genera uno o más tipos de eventos
  • 4. 226 GUI, Swing y Java Beans ITSON Manuel Domitsu Kono Oyentes Para que una clase pueda ser oyente de un evento debe implementar una o más interfaces oyente. Una interfaz oyente declara uno o más métodos oyentes que deben ser implementados por la clase oyente. Cuando un componente genera un evento, invoca a un método oyente de la clase oyente y le pasa como parámetro el evento. El método oyente contiene el código que maneja al evento generado por el componente. Tabla 7.1 Eventos, Componentes y Oyentes Clase de Evento Componentes que lo Generan Significado Interfaz Oyente Métodos Oyentes ActionEvent JButton JList JMenuItem JTextField El usuario hace clic sobre el botón. El usuario hace doble clic sobre la opción de la lista. El usuario selecciona una opción del menú. El usuario terminó de editar el texto. ActionListener actionPerformed() FocusEvent JComponent El componente ganó o perdió el foco. FocusListener focusGained() focusLost() ItemEvent JCheckbox JCheckboxMenuItem JChoice JList. El usuario selecciona o deselecciona una opción. ItemListener itemStateChanged() KeyEvent JComponent El usuario presionó o soltó una tecla. KeyListener keyPressed() keyReleased() keyTyped() MouseEvent JComponent El usuario presionó o soltó el botón del ratón. El ratón entró o salió del componente, o el usuario movió o arrastró al ratón. MouseListener mouseClicked() mouseEntered() mouseExited() mousePressed() mouseReleased() MouseMotionListener mouseDragged() mouseMoved() TextEvent JTextField JTextArea El usuario cambió el texto TextListener textValueChanged()
  • 5. Tema 7 GUI, Swing y Java Beans 227 ITSON Manuel Domitsu Kono Ejemplo sobre una Interfaz de Usuario Gráfica Para el ejemplo de la aplicación del amante de la música y el cine, AmanteMusica, se tiene el diseño de la interfaz de usuario gráfica mostrada en la figura 7.1. Figura 7.1. Diagrama de clases de la interfaz gráfica de la aplicación Amante de la Música Interfaz de Usuario de la Aplicación AmanteMusica La figura 7.2 muestra la ventana principal de la aplicación AmanteMusica, con su barra de menús. La figura 7.3 muestra la selección de la opción para agregar una canción al catálogo de canciones.
  • 6. 228 GUI, Swing y Java Beans ITSON Manuel Domitsu Kono Figura 7.2. Ventana principal de la aplicación AmanteMusica Figura 7.3. Selección de la opción de agregar una canción
  • 7. Tema 7 GUI, Swing y Java Beans 229 ITSON Manuel Domitsu Kono Para agregar una canción, primero se captura la clave de una canción utilizando el método estático showInputDialog() de la clase JOptionPane que permite capturar una línea de texto utilizando un cuadro de diálogo como el mostrado en la figura 7.4: Figura 7.4 Cuadro de diálogo para capturar la clave de una canción. A continuación se busca la canción de la clave en el catálogo de canciones. Si la canción no existe en el catálogo de canciones, se despliega el cuadro de diálogo mostrado en la figura 7.5 para capturar el resto de los datos de la canción: Figura 7.5. Cuadro de diálogo DlgCancion para capturar los datos de una nueva canción. Después de obtener los datos de una canción, el programa la agrega al catálogo de canciones y posteriormente despliega una tabla con las canciones del catálogo, figura 7.6. Si la canción ya existe en el catálogo de canciones, el programa despliega en un cuadro de diálogo los datos de la canción existente, figura 7.7.
  • 8. 230 GUI, Swing y Java Beans ITSON Manuel Domitsu Kono Figura 7.6. Listado de las calificaciones en el catálogo de calificaciones Figura 7.7 Cuadro de diálogo DlgCancion para mostrar los datos de una canción existente. Para actualizar los datos de una canción, primero se captura la clave de una canción en forma similar a cuando se quiere agregar una canción. A continuación se busca la canción de la clave en el catálogo de canciones. Si la canción existe en el catálogo de canciones, se despliega el cuadro de diálogo mostrado en la figura 7.8 para modificar los datos de la canción:
  • 9. Tema 7 GUI, Swing y Java Beans 231 ITSON Manuel Domitsu Kono Figura 7.8. Cuadro de diálogo DlgCancion para modificar los datos de una canción. Después de modificar los datos de una canción, el programa la actualiza en el catálogo de canciones y posteriormente despliega una tabla con las canciones del catálogo. Si la canción no existe en el catálogo de canciones, el programa despliega un cuadro de diálogo con un mensaje de error, utilizando el método estático show showMessageDialog() de la clase JOptionPane que permite despliega un mensaje utilizando un cuadro de diálogo como el mostrado en la figura 7.9: Figura 7.9 Cuadro de diálogo con mensaje de error. Para eliminar los datos de una canción, primero se captura la clave de una canción en forma similar a cuando se quiere agregar una canción. A continuación se busca la canción de la clave en el catálogo de canciones. Si la canción existe en el catálogo de canciones, se despliega el cuadro de diálogo mostrado en la figura 7.10 para confirmar la operación. Después de eliminar una canción, el programa despliega una tabla con las canciones del catálogo. Si la canción no existe en el catálogo de canciones, el programa despliega un cuadro de diálogo con un mensaje de error similar al de la figura 7.9.
  • 10. 232 GUI, Swing y Java Beans ITSON Manuel Domitsu Kono Figura 7.10. Cuadro de diálogo DlgCancion para confirmar la eliminación de una canción Las figura 7.11 muestra las opciones de las diferentes consultas que se pueden realizar en el catálogo de canciones. Figura 7.14. Selección de la opción de consultar todas las canciones Cada consulta produce una tabla como la mostrada en la figura 7.6.
  • 11. Tema 7 GUI, Swing y Java Beans 233 ITSON Manuel Domitsu Kono Para capturar, editar o desplegar los datos de un periodo se emplea el cuadro de diálogo mostrado en la figura 7.12: Figura 7.15. Cuadro de Diálogo DlgPeriodo