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.
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.
Repetimos básicamente lo que ya vimos:
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...
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
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;
}
}