Download Introducción a Java (3) - Humberto Cervantes homepage

Document related concepts
no text concepts found
Transcript
Introducción a Java (3)
Humberto Cervantes Maceda
Alfonso Martínez Martínez
1
Abril 2005
Indice
Conceptos Java
Interfases
El Framework Swing
2
Interfases
Ayer vimos el concepto de clase abstracta
Una clase que contiene algunos metodos para los
cuales no provee implementación
Una clase abstracta pura
No provee implementación para ningún método
Java provee una palabra reservada para este tipo de
clases : interfase
En Java, una clase sólo puede extender a otra,
sin embargo puede implementar multiples
interfases
Sustituye herencia múltiple
3
Ejemplo
Interface A
{
void metodoA();
}
Interface B
{
void metodoB();
}
class C implements A,B
{
public void metodoA() {...}
public void metodoB() {...}
}
4
Separación interfase-implementación
La separación interfase-implementación es una
buena práctica en el desarrollo
Un cliente depende de una interfase y no de una
implementación
Las implementaciones son sustituibles
Esta practica se encuentra frecuentemente en el
API de Java
En particular en los Swing
5
El Framework Swing
6
Swing, qué son?
Java provee un conjunto de clases que permiten
crear de manera relativamente sencilla
interfases de usuario complejas
javax.swing
Se trata de un framework
Conjunto de clases y sus relaciones que para son
utilizados mediante herencia
A diferencia de su antecesor AWT, las
aplicaciones Swing se despliegan de forma
correcta en todo entorno de ejecución
Es un poco lento
7
Componentes visuales Swing
Tres tipos de componentes principales
Contenedores
Menus
Componentes
Todos son
JComponents
8
Componentes visuales Swing
Tres tipos de componentes principales
Contenedores
Menus
Componentes
9
Contenedores
Pueden contener a otros componentes
JFrame – Ventana
JPanel – Area
JSplitPane – Area dividida
JTabbedPane – Area con lenguetas
JSrollPane – Area que se puede deslizar
Etc...
Algunos contenedores tienen asociado un
layout que define disposición de componentes
10
BorderLayout
FlowLayout
GridLayout
GridBagLayout
Componentes visuales Swing
Tres tipos de componentes principales
Contenedores
Menus
Componentes
11
Componentes visuales Swing
Tres tipos de componentes principales
Contenedores
Menus
Componentes
12
Componentes
No contienen a otros componentes
JButton – botón
JCheckBox – boton con palomita
JLabel – mensaje de texto
JTextField – entrada de texto
JPasswordField – entrada de clave
JList – lista
JTree – arborescencia
JTable – tabla
JEditorPane – editor de texto
etc...
13
Arquitectura MVC
Los Swing están construidos siguiendo una
arquitectura Modelo – Vista – Controlador
Modelo : los datos
Vista : representación visual de los datos
Controlador : interacción con el usuario que modifica
el modelo
Esta arquitectura permite tener múltiples vistas
para un mismo conjunto de datos
14
Arquitectura MVC
Main title
22.5
20
17.5
15
Column 3
Column 2
Column 1
12.5
10
Modelo 12
25
18 14
100 21
22 14
34
11
1
17
05
1
42
2
7.5
5
2.5
0
Row 1
Actualiza
Row 2
Row 3
Row 4
Main title
10
9
8
7
6
Actua sobre
Column 1
Column 2
Column 3
5
4
3
2
1
0
Row 1
Controlador
Row 2
Row 3
Row 4
Vistas
Main title
Row 1
Row 2
Row 3
Row 4
15
En Swing
En general, para todo componente, existe un
modelo
JTree – TreeModel
JList – ListModel
etc...
Todos los modelos son interfases
Swing provee implementaciones por default
Puesto que swing es un framework, en general
tendremos que crear subclases de las clases de
swing para usarlos
16
Mecanismo de eventos
En general los componentes swing actuan a la
vez de vista y de controlador
envian eventos para notificar de cambios
Los interesados en recibir eventos implementan
una interface particular y se suscriber con el
componente
addActionListener(ActionListener e)
La interfase tiene metodos que serán invocados por
el componente en el momento en que se produzca
un evento
Es el patrón de diseño observer
17
Ejemplo
JButton miBoton = new JButton(“Boton de prueba”);
miBoton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt)
{
System.out.println(“Se presionó el botón”);
});
En este ejemplo se crea una “clase interna” para
manejar el evento
Hay que consultar la JavaDoc para conocer los
eventos con más detalle
18
Síntesis
El framework Swing es muy poderoso pero algo
dificil de abordar
Requiere mucha práctica
Hoy vamos a crear una interfaz de usuario
ayudandonos del plugin Visual Editor de Eclipse
19