Anda di halaman 1dari 60

Interfaz Gráfica Básica de Usuario

Tecnologías Software para


Internet
2004
Objetivos
Capacidad para construir aplicaciones
gráficas en Java
Conocer los principales paquetes que
contienen componentes gráficos
Crear y manipular botones, etiquetas,
cajas de texto y paneles
Comprender la distribución de los
componentes gráficos en un panel
Tecnologías Software para Internet, Erick Arauco, Udep Ets - 2004 2
Recordando clases
//Programa: Persona.java
public class Persona {
String nombre; //propiedades de la clase
String apellido;
String fecha_nacimiento

public void cambiarNombre (String parametros) { //método 1


//codigo.....
}

public void calcularEdad (String parametros) { //método 2


//codigo....
}
public static void main ( String args[] )
{
Persona objeto = new Persona() //creando el objeto
objeto.cambiarNombre(valor); //llamando un método
}
}
Tecnologías Software para Internet, Erick Arauco, Udep Ets - 2004 3
Recordando clases
Cada objeto proviene de una clase
Todas las variables declaradas dentro
de una clase corresponden a las
Propiedades
Todos las funciones declaradas dentro
de una clase corresponden a los
Métodos

Tecnologías Software para Internet, Erick Arauco, Udep Ets - 2004 4


Atención
Las variables declaradas como públicas en la
clase podrán ser accedidas directamente y su
valor podría ser modificado
objeto. Propiedad = ValorNuevo

No recomendable, debido a que no


podríamos controlar el valor que se intenta
pasar a la propiedad

Tecnologías Software para Internet, Erick Arauco, Udep Ets - 2004 5


Atención
Es recomendable declarar las propiedades de
una clase como privadas, y ofrecer a través
de los métodos una forma de obtener o
modificar su valor

Objeto.setMetodo (value );
Objeto.getMetodo ( );

Tecnologías Software para Internet, Erick Arauco, Udep Ets - 2004 6


Protegiendo las propiedades

//Programa: Persona2.java
public class Persona2 {
private String nombre; //propiedades de la clase
private String apellido;

public void setNombre (String parametros) { //método 1


//codigo.....
}

public String getNombre ( ) {


}
}

Tecnologías Software para Internet, Erick Arauco, Udep Ets - 2004 7


A graphical user interface (GUI)

Otorga a nuestras aplicaciones Java


una interfaz mejorada
Un componente GUI es un objeto con
el cuál el usuario puede interactuar a
través del teclado o del mouse

Tecnologías Software para Internet, Erick Arauco, Udep Ets - 2004 8


Algunos componentes GUI
Componente Descripción
JLabel Etiqueta
JTextField Caja de texto
JButton Botones
JCheckBox Grupo de opciones
JComboBox Lista de items
JList Lista de items
JPanel Contenedor donde los
componentes se ubicarán
Tecnologías Software para Internet, Erick Arauco, Udep Ets - 2004 9
Paquetes (Package)

Paquetes = contienen un grupo de


clases que podemos reutilizar en
nuestras aplicaciones Java
Proveen el mecanismo para la
reutilización del Software
Paquetes = Estructura de directorios

Tecnologías Software para Internet, Erick Arauco, Udep Ets - 2004 10


Pasos para crear un paquete

Definimos una clase pública. Si no es


pública solo podrá ser usada por otras
clases en el mismo paquete
Elegimos un nombre para el paquete y
agregamos la instrucción „package“ en
el código fuente
Compilamos el programa Java

Tecnologías Software para Internet, Erick Arauco, Udep Ets - 2004 11


Ejemplo – creando un paquete
//Programa: Ejemplo.java

package arauco.java.capitulo10; //el paquete refleja una estructura de


//directorios

public class Ejemplo {


private String var1; //propiedades de la clase
private String var2;

public void setVariables (String parametros) { //método 1


//codigo.....
}

public String getVariables ( ) {


}
}

Tecnologías Software para Internet, Erick Arauco, Udep Ets - 2004 12


Ejemplo – creando un paquete
Nuestro paquete se debe encontrar en
el directorio C:\j2sdk1.4.1_03\lib
Bajo la siguiente estructura:
 Arauco\Java\Capitulo10
 En la carpeta Capitulo10 compilamos la
clase Java (.class)

Tecnologías Software para Internet, Erick Arauco, Udep Ets - 2004 13


Ejemplo – importando desde el
paquete

//Programa: EjemploTest.java

import Arauco.Java.Capitulo10.Ejemplo;

public class EjemploTest {


public static void main (String args[ ]) {
Ejemplo objeto = new Ejemplo; //creando un objeto
//el objeto proviene de la clase que se encuentra en el
//paquete que hemos creado
}
}

Tecnologías Software para Internet, Erick Arauco, Udep Ets - 2004 14


Continuando con la Interfaz
Gráfica

Así como hemos creado una clase Java


y colocado en un paquete para su
posterior reuso por cualquier
programador
Java ofrece una serie de clases para el
manejo de la interfaz gráfica de usuario
en diversos paquetes

Tecnologías Software para Internet, Erick Arauco, Udep Ets - 2004 15


Una vista a Swing

Las clases utilizadas para la creación de


interfaz Gráfica son parte del paquete
Swing
javax.swing
Estos nuevos componentes pertenecen
a la version 2 del Java

Tecnologías Software para Internet, Erick Arauco, Udep Ets - 2004 16


Una vista a Swing

Los componentes originales GUI


pertenecen al Abstract Windowing
Toolkit package (AWT)

Tecnologías Software para Internet, Erick Arauco, Udep Ets - 2004 17


Herencia en Java

Las clases que heredan de otra clase


poseen sus propiedades y métodos de
la clase padre
Clase Hija – Clase Padre
La herencia en Java se logra a través
de la instrucción „extend“

Tecnologías Software para Internet, Erick Arauco, Udep Ets - 2004 18


Herencia en Java

//Programa: ClasePadre.java
public class ClasePadre {
String nombre;
String apellidos;

public void metodo1( ) {


}

public void metodo2( ) {


}
}

Tecnologías Software para Internet, Erick Arauco, Udep Ets - 2004 19


Herencia en Java

//Programa: ClaseHija.java
public class ClaseHija extends ClasePadre {
public static void main (String args[ ]) {
ClaseHija objeto = new ClaseHija( );
objeto.nombre = valor;
objeto.metodo1( );
objeto.metodo2( );
}
}

Tecnologías Software para Internet, Erick Arauco, Udep Ets - 2004 20


Contenedores

Tecnologías Software para Internet, Erick Arauco, Udep Ets - 2004 21


Contenedores
Los objetos del mundo real necesitan contenedores
Nuestro auto tiene un chasis que contiene otros
tipos de contendores, como puertas, un maletero, un
capó que encierra el motor, y un compartimento que
contiene objetos de los pasajeros como asientos y
controles para conducir el coche.
Los componentes de aplicaciones software también
contienen contenedores que contienen numerosos
objetos y frecuentemente otros contenedores.

Tecnologías Software para Internet, Erick Arauco, Udep Ets - 2004 22


Contenedores
Una aplicación GUI tiene al menos
estos objetos:
 Un contenedor frame para contener las
partes visuales y no visuales del GUI.
 Un contenedor panel que está seccionado
en una distribución específica.
 Componentes que son añadidos al panel
dentro de las secciones de distribución
especificadas

Tecnologías Software para Internet, Erick Arauco, Udep Ets - 2004 23


JLabel

Etiquetas = objeto que permite


mostrar texto

Tecnologías Software para Internet, Erick Arauco, Udep Ets - 2004 24


JLabel - ejemplo

//Programa: LabelTest.java

Tecnologías Software para Internet, Erick Arauco, Udep Ets - 2004 25


JTextField - JPasswordField
Paquete javax.swing
Areas en las cuales texto puede ser
ingresado
JPasswordField oculta el ingreso por el
usuario mostrando un caracter („*“)

Tecnologías Software para Internet, Erick Arauco, Udep Ets - 2004 26


JTextField - JPasswordField

//Programa: TextFieldTest.java
//Programa: TextFieldTest2.java

Tecnologías Software para Internet, Erick Arauco, Udep Ets - 2004 27


JButton
Button = componente donde el usuario
clickea para realizar una acción
específica
Button = generan un evento

Tecnologías Software para Internet, Erick Arauco, Udep Ets - 2004 28


JButton

//Programa: ButtonTest.java

Tecnologías Software para Internet, Erick Arauco, Udep Ets - 2004 29


Distribución de Componentes
Cómo distribuir nuestros componentes
en un contenedor ?
A través de los „Layout Managers“
Proveen las capacidades básicas para
determinar la posición exacta de un
componente

Tecnologías Software para Internet, Erick Arauco, Udep Ets - 2004 30


Layout Managers
FlowLayout = Defecto para
java.applet.Applet, java.awt.Panel y
javax.swing.JPanel. Distribuye los
componentes en forma secuencias (de
izquierda a derecha)

Tecnologías Software para Internet, Erick Arauco, Udep Ets - 2004 31


Layout Managers
BorderLayout = Defecto para ContentPane
de JFrames y JApplets. Distribuye los
componentes en 5 áreas: Norte, Sur, Este,
Oeste y Centro

Tecnologías Software para Internet, Erick Arauco, Udep Ets - 2004 32


Layout Managers
GridLayout = Distribuye los componentes en
filas y columnas

Tecnologías Software para Internet, Erick Arauco, Udep Ets - 2004 33


Cómo elegir un controlador de
distribución ?
Los controladores de disposición
proporcionados por la plataforma Java tienen
diferentes potencias y puntos débiles.
Esta sección descubre algunos de los
escenarios de distribución más comunes y
cómo podrían trabajar los controladores de
distribución del AWT en cada escenario.

Tecnologías Software para Internet, Erick Arauco, Udep Ets - 2004 34


Cómo elegir un controlador de
distribución ?

Escenario 1:Necesitamos mostrar un


componente en todo el espacio que se
pueda conseguir
 Consideramos la utilización de
BorderLayout. Si utilizamos BorderLayout,
necesitaremos poner el componente que
necesite más espacio en el centro

Tecnologías Software para Internet, Erick Arauco, Udep Ets - 2004 35


Cómo elegir un controlador de
distribución ?

Escenario 2:Necesitamos mostrar


unos pocos componentes en una fila
compacta a su tamaño natural
 Consideramos usar un JPanel para contener
los componentes y usar el controlador por
defecto de JPanel que es FlowLayout

Tecnologías Software para Internet, Erick Arauco, Udep Ets - 2004 36


Cómo elegir un controlador de
distribución ?

Escenario 3:Necesitamos mostrar


unos pocos componentes del mismo
tamaño en filas y columnas
 GridLayout es perfecto para esto

Tecnologías Software para Internet, Erick Arauco, Udep Ets - 2004 37


FlowLayout

//Programa: FlowLayoutDemo.java

Tecnologías Software para Internet, Erick Arauco, Udep Ets - 2004 38


BorderLayout

//Programa: BorderLayoutDemo.java

Tecnologías Software para Internet, Erick Arauco, Udep Ets - 2004 39


GridLayout

//Programa: GridLayoutDemo.java

Tecnologías Software para Internet, Erick Arauco, Udep Ets - 2004 40


Herencia Múltiple
Un problema para Java ??
Que sucede si necesitamos que nuestra
clase herede de varias clases padres ??
„Interfaces“ ??
„Implements“ ??

Tecnologías Software para Internet, Erick Arauco, Udep Ets - 2004 41


Interfaces
Las interfaces es una colección de
definiciones de métodos (sin
implementaciones) y de valores constantes

Tecnologías Software para Internet, Erick Arauco, Udep Ets - 2004 42


Interfaces - Utilidad
Capturar similitudes entre clases no
relacionadas sin forzar una relación entre
ellas
Declarar métodos que una o varias clases
necesitan implementar

Tecnologías Software para Internet, Erick Arauco, Udep Ets - 2004 43


Interfaces – Herencia Múltiple ??
NO proporcionan Herencia Múltiple (Aunque
a veces se trata como si lo hicieran)
Analicemos:
 No se pueden heredar variables desde una
interface
 No se pueden heredar implementaciones de
métodos desde una interface
 La „herencia“ de una interfaz es independiente de
la herencia de la(s) clase(s) : Las clases pueden o
no estar relacionadas

Tecnologías Software para Internet, Erick Arauco, Udep Ets - 2004 44


Interfaces

Clase: Caballo Clase: León

Observación: Ambos pueden saltar !!

Podemos declarar una interfaz „Saltar“ que será


utilizada por ambas clases de manera diferente

Tecnologías Software para Internet, Erick Arauco, Udep Ets - 2004 45


Interfaces
Interface PuedeSaltar {
public void Saltar();
}

class Caballo implements PuedeSaltar {


String especie, color;

public void Saltar() {


System.out.println("El caballo salta");
}

public void Relincha(){


System.out.println(„El caballo relincha“);
}
}

Tecnologías Software para Internet, Erick Arauco, Udep Ets - 2004 46


Interfaces

class León implements PuedeSaltar {


int numero_patas;
public void Saltar() {
System.out.println("El León salta");
}
}

Tecnologías Software para Internet, Erick Arauco, Udep Ets - 2004 47


Interfaces – otro ejemplo

Cajero
Ambos podrían
realizar una operación
denominada „cobranza“
Cliente

El cajero cobra
Dos operaciones
El cliente acude al banco realizadas de
cierta cantidad de dinero
a cobrar su sueldo
a un cliente, producto de un distintas formas
préstamo personal

Tecnologías Software para Internet, Erick Arauco, Udep Ets - 2004 48


Interfaces – otro ejemplo

//programa: Cliente.java
//programa: Cajero.java
//programa: Cobranza.java (Interfaz)

//programa: Test.java

Tecnologías Software para Internet, Erick Arauco, Udep Ets - 2004 49


Manejo de eventos
Cada vez que el usuario teclea un caracter o
pulsa un botón del ratón, ocurre un evento.
Todo lo que tiene que hacer es implementar
el interface apropiado y ser registrado como
un oyente de evento del evento fuente
apropiado
Los componentes Swing puede generar
muchas clases de evento

Tecnologías Software para Internet, Erick Arauco, Udep Ets - 2004 50


Manejo de eventos
Acción que resulta en el Evento Tipo de Oyente
El usuario pulsa un botón, ActionListener
presiona „Enter“ o elige un item
de menú
El usuario elige un frame WindowListener
(Ventana Principal)
El usuario pulsa un botón del MouseListener
ratón
El usuario mueve el cursor sobre MouseMotionListener
un componente

Tecnologías Software para Internet, Erick Arauco, Udep Ets - 2004 51


Manejo de eventos
Cada evento está representado por un
objeto que ofrece información sobre el evento
e identifica la fuente
Las fuentes de los eventos normalmente son
componentes, pero otros tipos de objetos
también pueden ser fuente de eventos
Cada fuente de evento puede tener varios
oyentes registrados

Tecnologías Software para Internet, Erick Arauco, Udep Ets - 2004 52


Implementar un manejador de
eventos
Todo manejador requiere de 3 partes, a
saber:

Tecnologías Software para Internet, Erick Arauco, Udep Ets - 2004 53


Implementar un manejador de
eventos
Donde se declare la clase del manejador de
eventos, el código especifica que la clase
implementa una interface de oyente, o
desciende una clase que implementa un
interface de oyente
public class MyClass implements
ActionListener {

Tecnologías Software para Internet, Erick Arauco, Udep Ets - 2004 54


Implementar un manejador de
eventos
El código que registra un ejemplar de la
clase de manejo de eventos de un oyente
sobre uno o más componentes. Por
ejemplo.

someComponent.addActionListener(instance
OfMyClass);

Tecnologías Software para Internet, Erick Arauco, Udep Ets - 2004 55


Implementar un manejador de
eventos
La implementación de los métodos del
interface oyente. Por ejemplo

public void actionPerformed(ActionEvent e) {


...//code that reacts to the action...
}

Tecnologías Software para Internet, Erick Arauco, Udep Ets - 2004 56


Implementar un manejador de
eventos - ejemplos

//programa: ButtonTest1.java
//programa: ButtonTest2.java

Tecnologías Software para Internet, Erick Arauco, Udep Ets - 2004 57


Cuadros de Mensaje

Tecnologías Software para Internet, Erick Arauco, Udep Ets - 2004 58


Cuadros de Mensaje
JOptionPane.showMessageDialog(null,
„Mensaje“, „Titulo“, „Icono“)
null = el dialogo es independiente de
cualquier Frame que aparece en
pantalla

Tecnologías Software para Internet, Erick Arauco, Udep Ets - 2004 59


Iconos
Tipo Message Dialog Descripción

JOptionPane.ERROR_MESSAGE Muestra un diálogo


indicando un error
JOptionPane.INFORMATION_MESSAGE Muestra un diálogo
indicando un mensaje
informativo
JOptionPane.WARNING_MESSAGE Muestra un diálogo
alertando un problema
JOptionPane.QUESTION_MESSAGE Muestra un diálogo
haciendo una pregunta
JOptionPane.PLAIN_MESSAGE Simple contenido

Tecnologías Software para Internet, Erick Arauco, Udep Ets - 2004 60

Anda mungkin juga menyukai