¿Qué es un applet

¿Qué es un applet?

Un applet es una pequeña aplicación escrita en Java, pero que no está diseñada para funcionar "por sí sola", como los ejemplos que habíamos visto en modo texto, sino para formar parte de una página Web, de modo que necesitaremos un visualizador de páginas Web (como Internet Explorer de Microsoft, o Netscape Navigator -parte de Netscape Communicator-) para poder hacer funcionar dichos applets. Si no poseyeramos alguna utilidad de este tipo, en principio tampoco será un problema grave, porque el entorno de desarrollo de Java incluye una utilidad llamada "appletviewer", que nos permitirá probar nuestros applets.

¿Cómo se crea un applet?

Tendremos que dar tres pasos:


Vamos a verlo con un ejemplo. Crearemos un applet que escriba el texto "Hola Mundo!" en pantalla, al igual que hicimos en nuestra primera aplicación de ejemplo. Recordemos que lo que habíamos escrito en aquel momento fue:

    //
    // Aplicación HolaMundo de ejemplo
    //

    class HolaMundo {
        public static void main( String args[] ) {
            System.out.println( "Hola Mundo!" );
        }
    }

Esta vez tendremos que escribir más. Primero vamos a ver cómo debería ser el applet, y después comentaremos los cambios (bastantes) con relación a este programa:

    import java.awt.Graphics;

    public class AppletHola extends java.applet.Applet {

    public void paint(Graphics g) {
          g.drawString( "Hola Mundo!", 100, 50);
        }
    }
 

Los cambios son los siguientes:


(Un poco más adelante se verá el resultado de este Applet).

Y vamos a ver los tres pasos que tenemos que dar, con mayor detalle.

 

Primer paso: teclear el fuente.

Repetimos básicamente lo que ya vimos:

Segundo paso: crear la página Web.

No pretendo "formar maestros" en el arte de crear páginas Web. Apenas veremos lo necesario para poder probar nuestros Applets.

Las páginas Web normalmente son ficheros escritos en un cierto lenguaje. El más sencillo, y totalmente válido para nuestros propósitos, es el lenguaje HTML. Los ficheros HTML son ficheros de texto, que podremos crear con cualquier editor de texto (más trabajoso, pero es como más control se obtiene, de modo que eso es lo que haremos por ahora) o con editores específicos (como Netscape Composer, Microsoft Frontpage, Hot Dog, etc, que permiten "crear" más rápido, aunque a veces eso supone perder en posibilidades).

En nuestro caso, recurriremos nuevamente a "Edit" (o al bloc de notas de Windows, o cualquier otro editor de textos) y escribiremos lo siguiente:
 

<html>
  <head>
      <title>Prueba de applet</title>
  </head>
  <body>
      <h1>Prueba de applet</h1>
      <hr>
      <applet code=AppletHola.class width=300 height=120>
        alt="El navegador esta no esta mostrando el APPLET"
      </applet>
  </body>
</html>

Grabaremos este texto con el nombre "prueba.html"  (serviría cualquier otro nombre, con la única condición de que termine en ".htm" o en ".html") para utilizarlo un poco más adelante.

Vamos a ver qué hemos escrito:


El resultado de todo esto se puede ver en el siguiente apartado...

 

Tercer paso: probar el resultado.

Si queremos usar la utilidad "AppletViewer" que incorpora el JDK, teclearemos:

appletviewer prueba.html

y al cabo de un momento, tendremos en pantalla algo parecido a:

También podemos usar cualquier otro navegador que soporte Java (cualquiera moderno debería permitirlo). Por ejemplo, Netscape Navigator 4.5 mostraría lo siguiente:

y el Internet Explorer 4 de Microsoft



La "vida" de un applet.

En los applets hay un detalle importante que hemos dejado pasar hasta ahora: no hemos utilizado una función "main" que represente el cuerpo de la aplicación. En su lugar, hemos empleado el método "paint" para indicar qué se debe mostrar en pantalla. Esto es porque un applet tiene un cierto "ciclo de vida":


De momento sólo hemos empleado "paint". Más adelante iremos sacando partido a otros de estos métodos (y a otros que nos permiten los applets).

 

Ejemplo.

 

Hacer un applet que permita elevar un número al cuadrado y al cubo. La entrada será desde un campo de texto y las operaciones se realizarán al momento de presionar un botón asociado con la operación a realizar.

 

import java.awt.*;

import java.awt.event.*;

import java.applet.*;

 

 

public class ej016 extends Applet

{

  TextField campo1 = new TextField("0", 15);

  int bandera = 0;

  Button boton1 = new Button("Uno");

  Button boton2 = new Button("Dos");

 

  public void init()

  {

 

    add(boton1);

    add(boton2);

    add(new Label("resultado", Label.RIGHT));

    add(campo1);

  }

 

  public void paint(Graphics g)

  {

    switch(bandera)

    {

      case 1 : g.drawString("has precionado el boton 1", 20, 50); break;

      case 2 : g.drawString("has precionado el boton 2", 20, 50); break;

      default : g.drawString("No has precionado boton", 20, 50);

    }

  }

 

  public boolean action(Event evt, Object arg)

  {

    if(evt.target instanceof Button)

    {

      if(arg.equals("Uno"))

      {

        campo1.setText(cuadrado(Double.valueOf(campo1.getText()).doubleValue()));

      }

      else if(arg.equals("Dos"))

      {

        campo1.setText(cubo(Double.valueOf(campo1.getText()).doubleValue()));

      }

      return true;

    }

    return false;

  }

 

  String cuadrado(double n)

  {

    String a = "";

 

    a+= n*n;

 

    return a;

  }

 

  String cubo(double n)

  {

    String a = "";

 

    a+= n*n*n;

 

    return a;

  }

}

 

Ejemplo que describe una interfaz de entrada salida.

 

import java.awt.*;

import java.awt.event.*;

import java.applet.*;

 

/**

 * <p>Title: Interfaz pspice</p>

 * <p>Description: Entrada salida de datos</p>

 * <p>Copyright: Copyright (c) 2004</p>

 * <p>Company: UMSN</p>

 * @author Dr. Felix Calderon Solorio

 * @version 1.0

 */

 

public class Applet1 extends Applet {

  private boolean isStandalone = false;

  TextArea textArea1 = new TextArea();

  TextArea textArea2 = new TextArea();

  Label label1 = new Label();

  Label label2 = new Label();

  TextField textField1 = new TextField();

  Label label3 = new Label();

  Button button1 = new Button();

 

  public void init() {

    textArea1.setText("");

    textArea1.setBounds(new Rectangle(41, 222, 196, 198));

    this.setLayout(null);

    textArea2.setBounds(new Rectangle(254, 223, 196, 198));

    textArea2.setText("");

    label1.setText("datos de entrada");

    label1.setBounds(new Rectangle(96, 203, 92, 15));

    label2.setText("datos de Salida");

    label2.setBounds(new Rectangle(311, 204, 82, 15));

    textField1.setText("");

    textField1.setBounds(new Rectangle(187, 101, 118, 20));

    label3.setText("Archivo de entrada");

    label3.setBounds(new Rectangle(198, 82, 112, 15));

    button1.setLabel("Ok");

    button1.setBounds(new Rectangle(211, 141, 71, 25));

    this.add(textArea1, null);

    this.add(textArea2, null);

    this.add(label1, null);

    this.add(label2, null);

    this.add(textField1, null);

    this.add(label3, null);

    this.add(button1, null);

  }

 

  public boolean action(Event evt, Object arg)

  {

    if(evt.target instanceof Button)

    {

      if (arg.equals("Ok")) {

        String aux = textField1.getText();

        textArea1.setText("Entrada " + aux);

        textArea2.setText("salida"+ aux);

       }

    }

    return false;

  }

 

}

 

Regresar.