Está en la página 1de 29

POO – Java

Clase 4
 Desarrollo interfaz gráfica (GUI)
 AWT
 Swing
 Programación Web: Applets, Servlets y JSP

UCAECE Mdp – Algoritmos y Estructuras de Datos II - Java 1


Componentes visuales
• Ofrecer una interfaz amigable para el usuario.
• Manejo de ventanas y variedad de controles.
• Aplicable a cualquier plataforma. Independizarse del
API del S.O.
• Java Foundation Classes (JFC)
• Conjunto de librerías Java provistas como parte de J2SE,
para soportar la construcción de GUI y funcionalidad gráfica
para aplicaciones cliente, de diversas plataformas (MS
Windows, Linux, Mac OSX)

UCAECE Mdp – Algoritmos y Estructuras de Datos II - Java 2


AWT (Abstract Window Toolkit)
• Provista desde JDK 1.1
• Proporciona componentes GUI (Graphic User Interface)
estándares (botones, cuadros de texto, etc.), contenedores
(ventanas, paneles)
• Ofrece cuadros de diálogo de alto nivel (por ej. Abrir archivo)
• Operaciones de dibujo y manejo de fuentes, colores, imágenes y
robusto manejo de eventos.
• Controladores de distribución y disposición de componentes
(layouts), independientes de resolución de pantalla y tamaño de la
ventana.
• Clases de transferencia de datos, permitiendo cortar y pegar a
través del portapapeles de la plataforma nativa.

UCAECE Mdp – Algoritmos y Estructuras de Datos II - Java 3


Componentes y contenedores
• En un programa GUI necesariamente se debe proporcionar un
área en la cual dibujar.
• Un contenedor es un objeto el cual provee el espacio donde se
puede dibujar.
• Los elementos de la interfaz de usuario se denominan
componentes

Contenedor
Componentes
UCAECE Mdp – Algoritmos y Estructuras de Datos II - Java 4
Componentes: jerarquía de clases

Component

Container Label List Button TextComponent

ScroollPane Window Panel TextArea TextField

Frame Dialog

Ver otras clases AWT y métodos principales de Component y Container


en Clase 4 – Referencias
UCAECE Mdp – Algoritmos y Estructuras de Datos II - Java 5
LayoutManager
Administrador de presentación
1

2 3
• Cada contenedor tiene un LayoutManager asociado.
• Java proporciona un LayoutManager por defecto a cada
contenedor.
UCAECE Mdp – Algoritmos y Estructuras de Datos II - Java 6
LayoutManager: tipos
• Tipos de Layout más conocidos:
• FlowLayout : los componentes se muestran de izquierda a
derecha y de arriba hacia abajo.
• BorderdLayout : divide al contenedor en cinco areas: este,
oeste, norte, sur y centro.
• GridLayout: divide al contenedor en una grilla de M x N.
• CardLayout: define en una misma área etiquetas que se
superponen.
• Otros: GroupLayout, BoxLayout, NullLayout

UCAECE Mdp – Algoritmos y Estructuras de Datos II - Java 7


LayoutManager: FlowLayout

UCAECE Mdp – Algoritmos y Estructuras de Datos II - Java 8


LayoutManager - BorderLayout

UCAECE Mdp – Algoritmos y Estructuras de Datos II - Java 9


Contenedores: Clases derivadas
• Window:
– No poseen bordes ni barras de menú.
– Layout por defecto: BorderLayout / Free Design
• Frame: (derivada de Window)
– Ventana con bordes y un título.
– Layout por defecto: BorderLayout / Free Design
• Panel:
– Puede contener cualquier componente, ya sea otros paneles como
componentes simples de AWT
– Layout por defecto: FlowLayout
• ScrollPane:
– Es un panel que tiene un único elemento contenido.
– El panel proporciona las funciones de scroll automático para el elemento
contenido.
UCAECE Mdp – Algoritmos y Estructuras de Datos II - Java 10
Modelo de delegación de eventos
• Delegation Event Model, permite la comunicación sobre eventos
ocurridos.
• Cada elemento de comunicación entre la GUI y el programa se
define como un evento.
• Cada componente debería tener un oyente. Cuando un evento
ocurre, el origen del evento lo comunica a todos los oyentes
registrados.
• Cada evento resulta en la creación de un objeto Event.

Oyente
Oyente

UCAECE Mdp – Algoritmos y Estructuras de Datos II - Java 11


AWT: ejemplo

Apellido - Nombre

Ver resolución en Clase 4 – Referencias


UCAECE Mdp – Algoritmos y Estructuras de Datos II - Java 12
Manejo de eventos

Los eventos pueden ser manejados por:


• Una inner-class anónima para cada evento

botonAceptar.addMouseListener(new MouseAdapter() {

public void mouseClicked(MouseEvent e) {

botonAceptarClick();
}
});
• Los IDE modernos generan este código
• En algunos IDE se puede configurar cómo manejar los eventos

UCAECE Mdp – Algoritmos y Estructuras de Datos II - Java 13


Manejo de eventos
Los eventos pueden ser manejados por:
• Una sola inner-class
jButton1.addActionListener(formListener);
.....
private class FormListener implements
java.awt.event.ActionListener, java.awt.event.WindowListener {
public void actionPerformed(java.awt.event.ActionEvent evt){
if (evt.getSource() == jButton1) {
Pantalla.this.jButton1ActionPerformed(evt);
}
}

• La main class (la clase del formulario)


jButton1.addActionListener(this);
public void actionPerformed ... (método de pantalla)
UCAECE Mdp – Algoritmos y Estructuras de Datos II - Java 14
Swing
• Extiende AWT para proveer una GUI extensible de aspecto
configurable.
• Utiliza la capacidades de renderización de Java 2D API.
• Usa prefijo “J” para los componentes. Ej: JFrame y JButton.
• Aporta mayor cantidad y calidad de componentes: controles
atómicos, de datos complejos, de texto, de menú, de layout, de
ventanas.
• Otras prestaciones
• Drag and drop
• Edición sofisticada de texto.
• Apariencia programable (“look and feel” según plataforma)

UCAECE Mdp – Algoritmos y Estructuras de Datos II - Java 15


Swing: ejemplo

Ver categorías de componentes Swing y resolución ejemplo


en Clase 4 – Referencias

UCAECE Mdp – Algoritmos y Estructuras de Datos II - Java 16


Componentes: reglas generales de uso
• Para dibujarse un Component debe ser añadido a un Container.
• Tener en cuentas los controladores de disposición (FlowLayout,
BorderLayout, GridLayout ...)
• Todos heredan de Component gran cantidad de funcionalidad:
soporte básico para dibujo, manejo de los eventos, apariencia
(color, fuente, manejo de imágenes, tamaño y posición)
• Utilizar contenedores y componentes Swing

UCAECE Mdp – Algoritmos y Estructuras de Datos II - Java 17


Applets
• Aplicaciones que se ejecutan en un navegador web
(cliente).
• Tienen limitaciones, por cuestiones de seguridad.
• Provee interfaz gráfica (AWT, Swing)
• Extender java.applet.Applet (subclase de
java.awt.Panel)

UCAECE Mdp – Algoritmos y Estructuras de Datos II - Java 18


Servlets

• Implementar servidores orientados a petición-respuesta (ej.


HTTP)
• Servlets a servidores, como applets a navegadores
• No tienen interfaz gráfica. Generan respuesta, por ej., en HTML
• Reemplazo de scripts CGI (mayor eficiencia, multihilo)
• Paquete: javax.servlet (parte de JavaEE)
UCAECE Mdp – Algoritmos y Estructuras de Datos II - Java 19
Servlets

• La interface Servlet declara, pero no


implementa, métodos que manejan el servlet y
su comunicación con los clientes.
• Cuando un servlet acepta una llamada de un
cliente, recibe dos objetos:
• Un ServletRequest, que encapsula la
comunicación desde el cliente al servidor.
• Un ServletResponse, que encapsula la
comunicación de vuelta desde el servidor
hacia el cliente.

UCAECE Mdp – Algoritmos y Estructuras de Datos II - Java 20


Servlets

URL
HttpServlet
HttpRequest

Parameters String:
Form HTML (0 a N) request.getParameter("paramName")
doGet

HttpSession

doPost
Attributes Object:
(0 a N) session.getAttribute("attribName")

HttpResponse

UCAECE Mdp – Algoritmos y Estructuras de Datos II - Java 21


Servlets: Ejemplo básico
public class SimpleServlet extends HttpServlet {
public void doGet (HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException {
PrintWriter out;
String title = "Simple Servlet Output";
// primero selecciona el tipo de contenidos y otros campos de
// cabecera de la respuesta
response.setContentType("text/html");
// Luego escribe los datos de la respuesta
out = response.getWriter();
out.println("<HTML><HEAD><TITLE>");
out.println(title);
out.println("</TITLE></HEAD><BODY>");
out.println("<H1>" + title + "</H1>");
out.println("<P>This is output from SimpleServlet.");
out.println("</BODY></HTML>");
out.close();
} }
UCAECE Mdp – Algoritmos y Estructuras de Datos II - Java 22
Ciclo de vida de un Servlet

• El método init proporcionado por


la clase HttpServlet inicializa el
servlet y el método destroy lo
destruye.

UCAECE Mdp – Algoritmos y Estructuras de Datos II - Java 23


Guardar estado del cliente: Cookies
• El servidor envía información (en forma de pequeños archivos de
texto) al cliente para almacenarla, y poder posteriormente
recuperarla.
• Paquete javax.servlet.http.Cookie
• Utilidad: identificación de usuario durante sesión de comercio
electrónico, personalización de sitios, publicidad enfocada.
• No generan problemas de seguridad, sí de privacidad (opción de
deshabilitación). Evitar dependencia de ellas.

UCAECE Mdp – Algoritmos y Estructuras de Datos II - Java 24


Guardar estado del cliente: Sesión
• Mantener el estado de peticiones originadas desde el mismo
navegador durante un periodo de tiempo.
• Las sesiones son compartidas por los servlets a los que accede el
cliente.
• Obtener una sesión
HttpSession session = request.getSession(true);
// se crea si no existe

• Almacenar y obtener datos de una sesión


session.setAttribute("destinos", destinos);
List destinos = (ArrayList) session.getAttribute("destinos");

• Invalidar una sesión (eliminar el objeto HttpSession y todos sus valores). Es


opcional (automática por tiempo)
session.invalidate();
UCAECE Mdp – Algoritmos y Estructuras de Datos II - Java 25
Ejecución de un Servlet
• Desde un navegador Web (URL)
http://localhost:8080/servlet/bookdetails?bookId=203

• Desde una página HTML


• Enlace:
<a href="http://localhost:8080/servlet/cashier> Check Out</a">

• Submit formulario:
<form action =
"http://localhost:8080/servlet/receipt" method="post">

• Desde otro Servlet


BookDBServlet database = (BookDBServlet)
getServletConfig().getServletContext().getServlet("bookdb");
BookDetails bd = database.getBookDetails(bookId);

UCAECE Mdp – Algoritmos y Estructuras de Datos II - Java 26


JSP (Java Server Pages)

• Páginas HTML con inserciones de código Java


(elementos JSP tag: <% …%>)
• La página .jsp termina convirtiéndose en un servlet, donde el
HTML estático se imprime en la salida standard del servlet
• Facilita la división de tareas entre diseñadores Web y
desarrolladores Java
• Extensiones: CustomTags
(busca reducir acoplamiento código HTML y Java)

UCAECE Mdp – Algoritmos y Estructuras de Datos II - Java 27


Elementos JSP
• Elementos de script: código Java que se convertirá en parte del
servlet resultante.
• Expresiones de la forma <%= expresión %> que son evaluadas e
insertadas en la salida.
• Scriptlets de la forma <% codigo %> que se insertan dentro del método
service del servlet.
• Declaraciones de la forma <%! codigo %> que se insertan en el cuerpo
de la clase del servlet, fuera de cualquier método existente.
• Directivas: controlar la estructura general del servlet. Ej: page,
include
• <%@ directive attribute="value" %>
• Acciones: especificar componentes a ser usados, y controlar el
comportamiento del motor JSP.
• jsp:include: Incluye un fichero en el momento de petición de esta página.
• jsp:useBean - Encuentra o ejemplariza un JavaBean.
• jsp:setProperty - Selecciona la propiedad de un JavaBean.
• jsp:getProperty - Inserta la propiedad de un JavaBean en la salida
• jsp:forward - Reenvía al peticionario a una nueva página.
• jsp:plugin - Genera código específico del navegador.
UCAECE Mdp – Algoritmos y Estructuras de Datos II - Java 28
JSP: Variables predefinidas
• También llamados objetos implícitos.
• request (HttpServletRequest),
• response (HttpServletResponse)
• out (PrintWriter usado para enviar la salida al cliente)
• session (HttpSession, se crea automáticamente)
• application (ServletContext obtenido mediante
getServletConfig().getContext().
• config (ServletConfig de la página)
• pageContext
• page

Ver ejemplo en Clase 4 – Referencias


UCAECE Mdp – Algoritmos y Estructuras de Datos II - Java 29

También podría gustarte