Está en la página 1de 59

APPLETS

 Podría decirse que un applet es un


programa Java que se "inserta" en
una página Web.
 Un applet es un pequeño programa
que está almacenado en el servidor
web y se llama desde una de sus
páginas, ejecutándose en la máquina
del cliente.
La librería java.applet
 La definición de los applet se encuentra dentro de la
librería java.applet, la cual deberemos de importar
para poder utilizarla.
 Esta cuenta con una clase abstracta Applet, de la que
deberemos de heredar en la clase principal de nuestra
aplicación.

import java.applet.*;
public class miApplet extends Applet {
//variables y métodos
}
Librerías Graficas
 AWT (Application Windowing Toolkit):
los programadores heredan de la
clase Applet. AWT es la librería
creada en la primera versión de Java
(el JDK 1.0).
 Swing: los programadores heredan de
la clase JApplet. Swing es una librería
mas "avanzada", creada a partir de la
versión 2 (el JDK 1.2).
Mi primer applet

Para poder visualizar un applet dentro de una página web deberemos


de introducir su código HTML correspondiente:

<applet code="miapplet.class" height=100 width=300></applet>


Programación dirigida por
eventos

 El usuario puede realizar una serie de eventos


 Los eventos se producen sobre el navegador o sobre el
applet
 Estos eventos al final llegan al interprete (JVM) y esté
llama al método correspondiente en el applet.
 El programador que escribe el applet debe definir la
respuesta que el applet tendrá ante dichos eventos
 Por tanto, los applets tienen unos métodos básicos que
se ejecutan automáticamente
Ciclo de vida de un applet
Métodos Estándar
 void init()
Este método se llama al crearse el applet y sólo se ejecuta esa
vez. Se suele utilizar para inicializar variables globales.
 void start()
Se llama cuando hay que activar el applet. Esto sucede cuando el
applet se ve en la pantalla. Se suele utilizar para comenzar las
actividades de applet, ya que en general éste debe estar visible en
la pantalla para poder realizar su función.
 void stop()
Es el inverso del anterior. Es llamado cuando el applet deja de
estar visible. Se suele utilizar para interrumpir las actividades
activadas en start().
 void destroy()
Método llamado al destruirse el applet. Normalmente no se suele
sobreescribir, ya que la destrucción del applet conlleva la
destrucción de todo lo que se ha creado en él. Puede ser útil para
mostrar una ventana de confirmación que pregunte al usuario si de
verdad debe cargárselo.
Métodos Estándar
 void repaint()
Este método no debería ser sobrecargado y es llamado
cuando se necesita redibujar el applet. Podemos llamarlo
nosotros desde nuestro código. Llama a update(Graphics).
 void update(Graphics)
Llamado por repaint() cuando se necesita actualizar el
applet. Su implementación borra el rectángulo y llama a
paint() para volver a pintarlo.
 void paint(Graphics)
Método en el que se dibuja el applet y el cual deberemos
sobreescribir para poder dibujar lo que nosotros deseemos..
 void print(Graphics)
Equivalente a paint() pero es llamado cuando se va a
imprimir el contenido del applet.
Ejemplo
La función paint()

 paint() debe ser público, como el resto de métodos estándar, ya


que es llamado directamente por JVM.
 El parámetro del paint() es un objeto de la clase Graphics.
 ¿Qué es Graphics?
 Dicho de forma técnica, es un contexto gráfico independiente
del dispositivo.
 Es el "lienzo" o "papel" sobre el que dibujaremos.
¿Cómo se hace el registro
de eventos?
 Los métodos estandar
registran cada uno un
String que representa
al evento en la lista de
Strings.
 Cuando el applet se
debe repintar (llamada
a paint()) el applet lista
todos los eventos
recibidos y ordenados
cronológicamente
repaint()
 El programador puede provocar una
llamada a paint(), utilizando repaint(). Esta
función pone una petición más en la cola de
peticiones de repintado.
Paso de parámetros
Clase Graphics
drawString(String texto,x,y) Escribe un texto a partir de las coordenadas (x,y).
drawRect(x,y,ancho,alto) Son tres métodos encargados de dibujar, rellenar y
fillRect(x,y,ancho,alto) limpiar, respectivamente, un rectángulo cuya
clearRect(x,y,ancho.alto) esquina superior izquierda está en las
coordenadas (x,y) y tienen el ancho y alto
especificados.
drawLine(x1,y1,x2,y2) Dibuja una línea entre las coordenadas (x1,y 1) y
(x2,y2).
drawRoundRect(x,y,ancho,alto,anchoArco,altoArco) Equivalentes a los anteriores, pero con las esquinas
fillRoundRect(x,y,ancho,alto,anchoArco,altoAr redondeadas. La forma y tamaño de dichas
co) esquinas viene dada por los dos últimos
parámetros.
draw3DRect(x,y,ancho,alto,boolean elevado) Equivalentes a los primeros, pero dibujan un borde
fill3DRect(x,y,ancho,alto,boolean elevado) para dar la sensación de que está elevado o
hundido (dependiendo del valor del último
parámetro).
Clase Graphics
drawOval(x,y,ancho,alto) Dibujan una elipse con esquina izquierda superior en
fillOval(x,y,ancho,alto) (x,y) y el ancho y alto especificados. Si son iguales
dibujará un círculo.

drawArc(x,y,ancho,alto,anguloInicio,anguloArco) Dibuja una arco cuyo primer vértice está en (x,y) y el


fillArc(x,y,ancho,alto,anguloInicio,anguloArco) segundo en (x+ancho,y+alto). La forma del mismo
vendrá dado por los dos últimos parámetros.

drawPolygon(int[] coordenadasX,int[] Dibuja un polígono cerrado del número de puntos


coordenadasY,numCoordenadas) especificado en el último parámetro
fillPolygon(int[] coordenadasX,int[]
coordenadasY,numCoordenadas)

copyArea(xOrigen,yOrigen,ancho,alto,xDest,yDest) Copia el área cuya esquina superior izquierda está en


(xOrigen,yOrigen) y de ancho y alto especificados a la
zona que comienza en (xDest, yDest).
Clase Graphics
 Clase Color
 Graphics almacena internamente el color
con el que pinta todo, que por defecto es
negro.
 Para poder cambiar dicho color deberemos
utilizar el método setColor(), que recibe un
único parámetro de tipo Color .
 La clase Color dispone de varias
propiedades estáticas que contienen los
colores más comunes
Clase Color
 Color.black (negro)  Color.lightGray (verde
 Color.blue (añil) claro)
 Color.cyan (azul)  Color.magenta
(magenta)
 Color.darkGray (gris
claro)  Color.orange (naranja)
 Color.gray (gris)  Color.pink (rosa)
 Color.green (verde)  Color.red (rojo)
 Color.white (blanco)  Color.yellow (amarillo).
Clase Color
 Pero también se pueden crear instancias de color por
medio de constructores para definir colores menos
comunes.

Color c = new Color(int rojo, int verde, int azul) El color creado tendrá las cantidades de rojo,
verde y azul indicadas, las cuales deberán
estar en un rango que va de 0 a 255.

Color c = new Color(int rojo, int verde, int azul, Idéntico al anterior, pero añade un canal alfa que
int alfa) indica el grado de transparencia. Sólo
funciona con el JDK 1.2.
Clase Color
Manejo de imágenes
drawImage( Image img,int x,int y,ImageObserver observador )

 ImageObserver es un interfaz (que un antepasado de Applet


implementa) que nos ofrece información sobre la imagen según la
imagen se carga de la red.
 Image es un objeto que representa a la imagen.

 Image img = getImage(URL base, String fichero)


• Asigna la imagen contenida en la URL donde se encuentre el fichero que
contiene la imagen que queremos presentar y el nombre de ese fichero.
 URL getDocumentBase()
• Devuelve la URL donde está la página HTML (excluyendo el nombre del
fichero).
 URL getCodeBase()
• Devuelve la URL donde está el applet (excluyendo el nombre del
fichero).
Manejo de imágenes
Applets AWT
Botones y etiquetas
Tratamiento de eventos

 Esta es la función que el sistema Java


ejecutará cuando el usuario haga clic en
el botón del applet.
La clase "oyente" del evento

 En jbInit:

Le indica al applet que la clase que gestiona los eventos del


botón se llama reloj_bot_actionAdapter.

 La clase reloj_bot_actionAdapter se denomina "listener"


porque es una clase "oyente" de eventos, es decir, escucha
los eventos del botón. Esta clase es invocada o llamada por
el sistema Java cuando se recibe el evento de clic sobre el
botón. Esta clase señala el método del applet que recibirá la
llamada, en nuestro caso es la función
bot_actionPerformed(...) del applet.
Ejemplo Completo
Listas y textos
Clase TextField
 Constructores:
 TextField(): crea un campo de texto de 0 caracteres de
amplitud.
 TextField( int ): crea un campo de texto con la amplitud
señalada en caracteres
 TextField( String ): crea un campo de texto con la amplitud
suficiente para poner la cadena de caracteres
 TextField( String, int): crea un campo de texto donde pone
la cadena y cuya amplitud será el parámetro entero (si es
mayor que la amplitud de la cadena)

 Metodos
 String getText(): devuelve el texto.
 void setText( String ): introduce el objeto String.
Clase List:
 Constructores:
 List(): crea una lista.
 List( int ): crea una lista con la altura señalada
 List( int, boolean ): crea una lista con la altura señalada. El
parámetro boolean indica si es de selección múltiple.

 Metodos
 void add( String ): añade la cadena a la lista.
 void add( String, int ): inserta la cadena a la lista en la posición
indicada.
 void remove( int ): borra el item de la posición señalada.
 int getItemCount(): devuelve el número de items de la lista.
 String getItem( int ): devuelve el item de la posición señalada.
 String getSelectedItem(): devuelve el item seleccionado.
 int getSelectedIndex(): devuelve la posición del item
seleccionado.
 void select( int ): selecciona el item de la posición señalada.
java
Administradores de
diseño
 Hay dos factores determinantes del aspecto que
tendrá el applet:
1. El orden en el que añadimos (add) los
componentes al panel (recordar que el applet es un
tipo de panel).
2. El segundo factor es el administrador de diseño
del panel. Un administrador de diseño determina la
forma en que se presentarán los componentes y
contenedores. Con un administrador el
programador no tiene que definir la posición (x,y)
de cada elemento gráfico, lo que implica la
molestia de redefinir la posición cada vez que la
aplicación cambia de tamaño con la ventana.
Por defecto:
La función setLayout.

setLayout( new TIPO_DE_ADMINISTRADOR_DE_DISEÑO() );

Donde: TIPO_DE_ADMINISTRADOR_DE_DISEÑO puede ser:


 FlowLayout,
 BorderLayout,
 GridLayout y
 GridBagLayout.
FlowLayout
 FlowLayout( )
 FlowLayout( int align ): El parámetro debe
ser una constante static de la clase
FlowLayout que indica el alineamiento
horizontal: FlowLayout.LEFT,
FlowLayout.RIGHT o FlowLayout.CENTER.
 FlowLayout( int align, int hgap, int vgap ):
el segundo y tercer parámetro indican la
separación horizontal y vertical en píxeles.
FlowLayout

setLayout( new FlowLayout( FlowLayout.LEFT, 20, 10 ) ):


BorderLayout

 BorderLayout( )
 BorderLayout( int hgap, int vgap ):
para indicar la separación horizontal y
vertical en píxeles.
BorderLayout
GridLayout
Applets Swing
Diferencias Swing y AWT
 La primera diferencia es que la clase del applet
Swing se llama JApplet, que hereda de Applet.

 Otra diferencia importante es que en los JApplet


hay que añadir los componentes gráficos
(JComponent) al Panel raíz (JRootPane). En
AWT el componente se podía añadír al propio
applet.

Container contenedor = getContentPane();


contenedor.setLayout( new FlowLayout() );
contenedor.add(etiqueta_titulo);
Técnicas
Avanzadas
Ejecución multihilo
Técnica Double-buffering

 Este método consiste en construir una


pantalla virtual, que no vemos pero
que existe en la memoria del
ordenador, y pintar en ella lo que
necesitemos mostrar para volcarla a
la pantalla real cuando lo
necesitemos.
 Image, dispone de un método que nos será muy útil
en este caso:

Graphics img.getGraphics()

 Este método creará un lienzo a partir de una imagen,


con las mismas dimensiones que ésta.

 También utilizaremos el método de Applet llamado


createImage(anchura, altura) que crea una imagen
en blanco del tamaño especificado.
Eventos

 Cuando sucede un evento que afecta


al applet, la máquina virtual de Java
ejecuta un método que se llama
controlador de eventos. En principio
esos métodos no tienen nada, por lo
que deberemos sobreescribirlos en
función de nuestras necesidades.
Eventos
 boolean mouseDown(Event, int, int)
 Llamado cuando pulsamos un botón del ratón; los
parámetros segundo y tercero contienen la posición
del ratón cuando ocurrió el evento, mientras que el
primero en un objeto que contiene información
adicional sobre el mismo.
 boolean mouseUp(Event, int, int)
 Llamado cuando soltamos el botón del ratón después
de haberlo pulsado.
 boolean mouseMove (Event, int, int)
 Llamado cuando movemos el ratón.
 boolean mouseDrag (Event, int, int)
 Llamado cuando movemos el ratón con un botón
pulsado.
Eventos
 boolean mouseEnter (Event, int, int)
 Llamado cuando el ratón entra en el applet.
 boolean mouseExit (Event, int, int)
 Llamado cuando el ratón abandona el
applet.
 boolean keyDown(Event,int)
 Llamado cuando se pulsa una tecla. El
argumento entero indica cuál.
 boolean keyUp(Event, int)
 Llamado cuando se suelta una tecla.
Sonido
 En Java existe una manera (tampoco
muy precisa, pero mucho mejor que
las que ofrece Javascript o HTML) de
hacer funcionar ficheros de sonido.
Para ello utilizaremos el interfaz
AudioClip:

AudioClip sonido = getAudioClip(getDocumentBase(),


"musica.mid");
Sonido

 Sonido.play()
 Toca el fichero, aunque sólo una vez.
 Sonido.loop()
 Toca el fichero indefinidamente.
 Sonido.stop()
 Para la reproducción del sonido.
Documentación

 String getAppletInfo()
 Devuelve una cadena que identifique
el applet.
Documentación

public String getAppletInfo() {


return "Applet MostrarCadena, por
Daniel Rodriguez Herrera";
}

También podría gustarte