Para crear una applet normalmente será necesario importar al menos las bibliotecas java.awt.* y la java.applet.*.
La clase que represente a la applet se ha de declarar como una subclase de la clase Applet, para poder sobreescribir los métodos de la clase Applet.
Siempre conviene sobreescribir al menos el método paint() que será llamado por los navegadores que soporten applets para mostrarles por pantalla.
Vamos a construir una applet denominada AppletDiagonal que simplemente dibuje una línea diagonal. Un posible código para esta applet sería:
import java.awt.*; import java.applet.*; public class AppletDiagonal extends Applet { public void paint(Graphics g) { g.setColor( Color.red ); g.drawLine(0, 0, getWidth(), getHeight() ); } }
Pasemos a comentar el funcionamiento de este código:
Para ejecutar la applet, una vez compilado el fichero, se introduce la llamada a la applet en una página Web (por ejemplo AppletDiagonal.htm), introduciendo entre su código HTML lo siguiente:
<applet code="AppletDiagonal.class" width=200 height=200> </applet>Cuando se cargue esta página Web en un navegador compatible con Java o mediante el visualizador de applets que viene con el JDK (appletviewer) se verá algo como:
Imagen 12: Applet "Línea"
Se podría dibujar un rectángulo con cambiar la línea de código de drawLine() por otra que llamase al método drawRect():
g.drawRect(10, 10, r.width –20, r.height –20); C. Creación de applets más avanzadosLa creación de applets complejos, escapa a las intenciones de este tutorial, con lo que no se va a presentar el código fuente de más applets.
El dominio de la biblioteca AWT es una condición imprescindible para la creación de applets de más calidad y vistosidad.
Por último recordar que con el JDK se incluyen unas cuantas applets que pueden servir para el estudio de las mismas, puesto que se incluye su código fuente.
Para más información consulte [van Hoff et al., 1996].
D. Creación de una aplicación que utilice la applet (AWT)Se va a utilizar AWT para crear una aplicación que de un resultado igual que la ejecución de la "applet Línea". Será una aplicación que creará un Frame de AWT para incluir en su interior la applet que ya fue creada.
De hecho el main() de la aplicación lo único que hará será crear un objeto de este tipo (indicándole altura y anchura, como hacíamos en la applet mediante los parámetros de la etiqueta HTML).
El código fuente de la aplicación sería el siguiente:
import java.awt.*; import java.awt.event.*; class FrameLinea extends Frame { private AppletDiagonal unaApplet; // Se mostrará public static void main( String[] s ) { new FrameLinea( 200, 230 ); } public FrameLinea( int ancho, int largo ) { super(); // Constructor de Component // Se añade un oyente que cerrara la aplicación addWindowListener( new OyenteLinea() ); // Se crea una applet de diagonal unaApplet=new AppletDiagonal(); unaApplet.init(); unaApplet.start(); // Se mete la applet en frame add( unaApplet ); setSize(ancho,largo); // ajusta frame setVisible(true); // muestra frame } // Clase anidada class OyenteLinea extends WindowAdapter { // Sobreescribo el método de "cuando se cierra ventana" public void windowClosing(WindowEvent e) { unaApplet.stop(); unaApplet.destroy(); System.exit(0); } } }
Vamos a crear un Frame en el que vamos a incluir la applet unaApplet que será de la clase AppletDiagonal, creada anteriormente.
La aplicación lo que hace es crear un oyente de la clase creada OyenteLinea, que será el encargado de capturar el evento de cerrar la ventana del Frame.
En el constructor se inicia la applet (init() y start()) y se añade al Frame mediante el método add() de la clase Container (Frame es hija de Container).
Por último se establece el tamaño del Frame (recibido por parámetro) mediante setSize() y por último se muestra el Frame que ya tiene en su interior la applet (setVisible()).
Cuando se cierra la ventana, el OyenteLinea se encarga de cerrar la applet, mediante stop() y destroy(), y de finalizar la aplicación mediante System.exit().
E. Creación de una aplicación que utilice la applet (Swing)Esta misma aplicación se puede crear utilizando Swing con solo cambiar las siguientes cosas:
1. Se ha de incluir la biblioteca de Swing:
import javax.swing.*;2. Se han de cambiar los nombres de la clase Frame de AWT por la clase JFrame de Swing.
3. Se crea un contentPane mediante un objeto JPanel, justo antes de llamar al oyente:
setContentPane( new JPanel() );4. Para añadir la applet se ha de añadir al contentPane:
getContentPane().add( unaApplet );