Download Diapositiva 1 - Google Groups

Document related concepts
no text concepts found
Transcript
Interfaz Grafica de Usuario
Interfaz de Usuario
La interfaz de usuario es aquella que permite al programa
interactuar con el usuario. Las interfaces de usuario pueden
ser una simple línea de comandos o interfaces gráficas que
proporcionan las aplicaciones más modernas.
La interfaz de usuario es el aspecto más importante de
cualquier aplicación. Una aplicación sin un interfaz fácil,
impide que los usuarios saquen el máximo rendimiento del
programa. Java proporciona los elementos básicos para
construir decentes
interfaces de usuario a través del AWT, y opciones para
mejorarlas mediante Swing.
Introducción al AWT
Una interfaz grafica de usuario (GUI) presenta una interfaz
de imágenes con un programa.
Las clases de java que usamos para construir GUI’s forman
parte del paquete:
java.awt.*
La estructura básica del AWT se basa en Componentes y
Contenedores.
Estructura de la AWT
La estructura de la versión actual del AWT podemos
resumirla en los puntos que se exponen a continuación:
Los Contenedores contienen Componentes, que son
los controles básicos.
No se usan posiciones fijas de los Componentes, sino
que están situados a través de una disposición
controlada (layouts)
El común denominador de más bajo nivel se acerca al
teclado, ratón y manejo de eventos
Alto nivel de abstracción respecto al entorno de
ventanas en que se ejecute la aplicación
Estructura de la AWT
La arquitectura de la aplicación es dependiente del
entorno de ventanas, en vez de tener un tamaño
fijo.
Es bastante dependiente de la máquina en que se
ejecuta la aplicación (no puede asumir que un
diálogo tendrá el mismo tamaño en cada máquina).
Carece de un formato de recursos. No se puede
separar el código de lo que es propiamente
interface.
Componentes
Son aquellos que permiten al usuario interactuar
con la aplicación y proporcionar información
desde el programa al usuario sobre el estado del
programa. Típicos ejemplos de Componentes son
los botones, barras de desplazamiento, etiquetas,
listas, cajas de selección o campos de texto.
En el AWT, todos los Componentes de la interface
de usuario son instancias de la clase Component o
uno de sus subtipos.
Colocación de Componentes
La posición y tamaño de un componente en un
contenedor es determinado por un manejador
del Layout.
Usted puede controlar el tamaño o posición de
componentes deshabilitando al encargado de la
disposición.
Usted puede utilizar setLocation(), setSize(), o
setBounds() del componente para localizarlo en
el contenedor.
Contenedores
Los Contenedores contienen y organizan la
situación de los Componentes; además, los
Contenedores son en sí mismos Componentes y
como tales pueden ser situados dentro de otros
Contenedores. También contienen el código
necesario para el control de eventos, cambiar la
forma del cursor o modificar el icono de la
aplicación. En el AWT, todos los Contenedores
son instancias de la clase Container o uno de sus
subtipos.
Jerarquía de herencia java.AWT
Object
Event
CheckboxGroup
Eventos
¿Qué es un evento?
Un evento es una encapsulación de una
información que puede ser enviada a la aplicación
de manera asíncrona.
Los eventos pueden corresponder a acciones físicas
(ratón y teclado) y acciones lógicas
¿Con cuales clases se trabajan los eventos?
Java.util.EventObject es la clase padre de todos los
eventos, su subclase java.awt.event es la clase
padre de todos los eventos AWT
Clase Event
La clase Event intenta capturar las características
fundamentales de todos los eventos que genera el usuario.
Los datos miembro de la clase Event son los que se indican
a continuación:
id - El tipo de evento que se ha producido
target - Componente sobre el que se ha producido el
evento
x, y - Las coordenadas en donde se ha producido el
evento relativas al Componente que actualmente está
procesando ese evento.
key - Para eventos de teclado, es la tecla que se ha
pulsado. Su valor será el valor Unicode del carácter
que representa la tecla.
Clase Event
when - Instante en que se ha producido el evento
modifiers - La combinación aritmética del estado en
que se encuentran las teclas modificadoras Mays,
Alt, Ctrl.
clickCount - El número de clicks de ratón
consecutivos. Sólo tiene importancia en los eventos
MOUSE_DOWN
arg - Es un argumento dependiente del evento. Para
objetos Button, este objeto arg es un objeto String
que contiene la etiqueta de texto del botón
evt - El siguiente evento en una lista encadenada de
eventos
Generación y Propagación de Eventos
Cuando un usuario interactúa con la forma, el sistema
Java crea una instancia de la clase Event y llena sus datos
miembro con la información necesaria para describir la
acción. Es en ese momento cuando el sistema Java permite
a la forma controlar el evento. Este control comienza por
el Componente que recibe inicialmente el evento (por
ejemplo, el botón que ha sido pulsado) y se desplaza hacia
arriba en el árbol de Componentes, componente a
componente, hasta que alcanza al Contenedor de la raíz
del árbol.
Generación y Propagación de Eventos
Durante este camino, cada Componente tiene
oportunidad de ignorar el evento o reaccionar ante él
en una (o más) de las forma siguientes:
Modificar los datos miembros de la instancia de
Event
Entrar en acción y realizar cálculos basados en la
información contenida en el evento
Indicar al sistema Java que el evento no debería
propagarse más arriba en el árbol
Generación y Propagación de Eventos
Botón Uno recibe action...
Panel 2 recibe action...
Panel 1 recibe action...
Forma recibe action...
Botón Dos recibe action...
Panel 2 recibe action...
Panel 1 recibe action...
Forma recibe action...
Código controlador de eventos
public boolean handleEvent( Event evt ) {
if( evt.id == Event.ACTION_EVENT)
{
label2.setText("Hola");
return true;
}
return( super.handleEvent( evt ) );
}
Código controlador de eventos
public boolean handleEvent( Event evt ) {
if( evt.target instanceof Button)
{
label2.setText(label2.getText().valueOf(var));
var++;
return true;
}
return( super.handleEvent( evt ) );
}
Tipos de Eventos
FISICOS
ComponentEvent
Esconder, mover, redimensionar,
mostrar
ContainerEvent
Añadir o eliminar un componente
FocusEvent
Obtener o perder el Focus
KeyEvent
Pulsar, liberar o teclear una tecla
MouseEvent
Entrar, salir, pulsar, soltar o hacer
click
MouseMotionEvent
Arrastrar o mover
WindowEvent
Maximizar, minimizar, abrir, cerrar,
activar o desactivar
Tipos de Eventos
SEMANTICOS
ActionEvent
Una acción se ha
ejecutado
AdjustmendEvent
Un valor se ha ajustado
ItemEvent
Un estado a cambiado
TextEvent
Un texto ha cambiado
Manejadores de Layout por defecto
Component
Container
Window
Frame
Dialog
BorderLayout
Panel
Applet
FlowLayout
Manejador FlowLayout
•
•
•
•
•
Disposición por defecto para la clase panel
Componentes agregados de izquierda a derecha
La alineación por defecto es centrado
Utiliza componentes de tamaños preferidos
Se usa su constructor para manejar su
comportamiento
Manejador BorderLayout
• Disposición por defecto para la clase frame
• Componentes agregados en regiones específicas
import java.awt.*;
Frame
public class FrameExample{
private Frame f;
public FrameExample() {
f = new Frame("Hello!"); }
public void launchFrame() {
f.setSize(170,170);
f.setBackground(Color.blue);
f.setVisible(true); }
public static void main(String args[]) {
FrameExample guiWindow = new FrameExample();
guiWindow.launchFrame(); } }
Componentes AWT
Componentes AWT
Swing
Swing es una segunda generación del GUI toolkit
de java.
Se construye sobre AWT, pero suplanta los
componentes con versiones más livianas para
mejorar la interfaz grafica.
Hay muchos componentes mas: JTable, JTree, y
JComboBox.
Swing
import com.sun.java.swing.*;
public class JHolaMundo extends JFrame {
public static void main( String argv[] ) {
new JHolaMundo();
}
JHolaMundo() {
JLabel hola = new JLabel( "Hola Mundo!" );
getContentPane().add( hola,"Center" );
setSize( 200,100);
setVisible( true );
}
}
Swing
•
No utiliza nada nativo (no existen clases "peer")
•
100% Pure Java (excepto drag and drop).
•
L & F (Look and Feel) cargado automáticamente
para la plataforma.
•
Podemos diseñar nuestro propio aspecto.
•
Swing no reemplaza a AWT.
•
Extiende los componentes evitando métodos nativos.
•
Objetivo los NC.
Swing
Hay muchas mas clases que en el awt.
Tienen el mismo nombre de algunas clases de awt,
excepto una J inicial, como, por ejemplo, JFrame,
JDialog, etc.
Estas clases funcionan igual que las de awt, pero
contienen muchos métodos más útiles.
En swing están las Toolbar, es decir, unas pequeñas
barras sobre las que hay unos botones. Se pueden
mover dentro de las ventanas que las incluyen.
Swing
Los botones de swing, como casi todos los
demás JComponent, pueden tener tanto una
etiqueta como una imagen, imagen que puede
cambiar según el estado del botón.
Además en swing se pueden utilizar los
Tooltip, es decir, aquellas sugerenias que salen
automáticamente en un componente cuando el
ratón se detiene en él durante un rato.
Clases Peer
Clases que conectan la interface gráfica a
implementaciones dependientes de la plataforma
(motif, windows)
Clases Peer
El AWT usa una arquitectura peer : Cada
componente AWT crea un objeto paralelo
llamado su peer (igual). Los objetos peer
implementan interfaces en el paquete Java
java.awt.peer. Por ejemplo, cada java.awt.Label
usa un objeto peer que implementa
java.awt.peer.LabelPeer. A cada componente
AWT le corresponde una clase peer escrita en el
código nativo del sistema operativo (C
habitualmente), por lo que los componentes AWT
son, por construcción, dependientes de la
plataforma
Clases Peer