APPLETS

APARTADOS

Un applet muy sencillo
Manejar eventos ratón
Ir a una página web
Manejo del teclado

En Java existe la posibilidad del desarrollo de applets. Un applet es una aplicación que es ejecutada en el navegador: se descarga en la máquina del cliente y en la máquina del cliente es donde se produce la ejecución.

Un applet muy sencillo

¿Cómo se incluye un applet en una página HTML?. Pues bastante sencillo:

<APPLET CODE=primerApplet.class codebase="ejemplos/004_primerApplet/" WIDTH=235 HEIGHT=40>
<PARAM NAME="texto" VALUE="Hola amigo">
Tu navegador no está preparado para ejecutar JAVA
</APPLET>

La etiqueta CODE indica el nombre de la clase que se va a ejecutar y en la etiqueta CODEBASE la ruta "relativa" donde se encuentra dicha clase. Después vendría el ancho y alto de la clase.

Para pasar un parámetro de la página HTML al Applet se usa la etiqueta PARAM: en NAME estaría el nombre del parámetro y en VALUE el valor del parámetro.

Después vendría el texto que aparecería en el caso de no poder ejecutarse o no encontrar la clase especificada.

El siguiente texto es un applet:

Tu navegador no está preparado para ejecutar JAVA

Pincha en este enlace para descargar o visualizar el código

Veamos el código de este Applet:

import javax.swing.*; //Necesario para usar JApplet
import java.awt.*; //Clases como Font se encuentran en este paquete

//Todo applet tiene que instanciar de la clase "Applet", pero
//se usará JApplet porque en dicha clase es donde se podrá usar el paquete Swing

public class primerApplet extends JApplet
{

//Declaración de una variable
String textoVisualizar;

 

//El siguiente método (init) es automáticamente invocado cuando el applet arranca
public void init()
{
//Se recupera un parámetro que se ha enviado desde la página web
textoVisualizar = getParameter( "texto" );

}
//El siguiente método (stop) es invocado cuando el Applet termine (cuando el usuario cierra el navegador o
//se va hacia otra página web)

public void stop()
{ }
//Se sobrecarga el método "paint" el cual permitirá imprimir en pantalla
public void paint(Graphics g)
{

//Se especifica el tipo de letra a usar
g.setFont(new Font("Verdana", Font.BOLD, 12));

//Se escribe una cadena en la posición indicada
g.drawString(textoVisualizar,20,20);

}

}    

Un applet tiene más métodos que se pueden sobrecargar. A continuación se detallan todos los métodos con una breve explicación:

void init(). Sólo se ejecuta una vez, al crearse el applet.
void start(). Cuando se activa el applet se llama a este método, cuando el applet es visible en la pantalla.
void stop(). Se llama a este método cuando el applet no está visible.
void destroy(). Es llamado cuando se destruye el applet.
void repaint(). Llama al método update(Graphics). Se encarga del refresco del applet.
void paint(Graphics). Aquí se introduciría el código para dibujar en pantalla.

EJERCICIO. Pasar dos parámetros a un applet: nombre y apellidos. Visualizar en el navegador en una línea el nombre y en otra línea los apellidos. El tamaño de la letra será de 20.

Manejar eventos ratón

A continuación se va a ver un applet que maneja los eventos del ratón:

Tu navegador no está preparado para ejecutar JAVA

Pincha en este enlace para descargar o visualizar el código

El código del applet es el siguiente:

import java.applet.*;
import java.awt.*;
import java.awt.event.*;

//Se va a implementar una interfaz: ActionListener
//Los objetos definen su interacción con el exterior mediante los métodos de los cuales dispongan. Por tanto
//generalmente una interfaz va a ser un conjunto de definiciones de métodos ( pero sin implementar )

public class evento extends Applet implements ActionListener
{
//Un objeto StringBuffer representa una cadena cuyo tamaño puede variar. Antes usamos la clase String, pero tiene una pequeña desventaja: una vez asignado un valor //éste debe permanecer constante. Como se va a ir modificando el valor de la cadena se usará la clase StringBuffer

StringBuffer textoVisualizar;
//Se definen dos botones para el formulario
Button okBoton;
Button cancelaBoton;

 

public void init()
{
//Se asigna el valor inicial
textoVisualizar = new StringBuffer(getParameter( "texto" ));

//La siguiente sentencia indica que se colocarán los componentes con el formato FlowLayout: todos los componentes en una única fila
setLayout(new FlowLayout());

//Se crean los botones definiendo su etiqueta
okBoton = new Button("Aceptar");
cancelaBoton = new Button("**** Botón Cancelar ****");

//Se insertan los componentes en el formulario
add(okBoton);
add(cancelaBoton);

//Agrega cada uno de los componentes ( los dos botones ) al método que se encargará de gestionar los eventos producidos

okBoton.addActionListener(this);
cancelaBoton.addActionListener(this);
}
public void stop()
{

}
public void paint(Graphics g)
{

//Se especifica el tipo de letra a usar
g.setFont(new Font("Verdana", Font.BOLD, 24));

//Hay que llamar al método "toString" para que convierta el objeto "StringBuffer" en "String"
g.drawString(textoVisualizar.toString(),40,180);

}

//Método de la interfaz "ActionListener" que se va a implementar. En él se pasa como argumento un objeto que definirá el tipo de evento producido
public void actionPerformed(ActionEvent evt)
{
//Primero se averiguará que componente del formulario ha llamado a este método, pues pueden estar asociados varios componentes al mismo método.

if (evt.getSource() == okBoton)
{
//Se cambia la etiqueta del botón
okBoton.setLabel("Ok");
repaint();

}
else if (evt.getSource() == cancelaBoton)
{textoVisualizar = new StringBuffer("Pulsado cancelar");
repaint();
}
}

}    

EJERCICIO. Desarrollar un applet que tenga una caja de texto y un botón. El usuario en la caja de texto tendrá que introducir su fecha de nacimiento. Seguidamente cuando el usuario pulse sobre el botón tendrá que aparecer un texto indicando su edad.

Ir a una página web

Rellenando una caja de texto se podrá redireccionar a la página web indicada:

Tu navegador no está preparado para ejecutar JAVA

Pincha en este enlace para descargar o visualizar el código

El código del applet es el siguiente:

//Importación de módulos necesarios
import java.applet.*; //Necesario para usar applets
import java.awt.*; //Funciones para imprimir en pantalla
import java.awt.event.*; // Paquete donde se encuentra "ActionListener"
import java.net.*; //Aquí tendremos la clase URL

public class abrePaginaWeb extends Applet implements ActionListener
{

 

TextField cajaTexto;
Button boton;
boolean urlCorrecta;

public void init()
{
setLayout(new FlowLayout());
cajaTexto = new TextField("www.google.com");
boton = new Button("Ir a página");

cajaTexto.addActionListener(this);
boton.addActionListener(this);
add(boton);
add(cajaTexto);

urlCorrecta = true;

}

public void paint(Graphics g)
{
if (urlCorrecta)
g.drawString("Introduce URL",20,80);
else
{
g.drawString("Problemas de acceso a la URL especificada",20,80);

}


}

public void actionPerformed(ActionEvent act)
{

URL urlAcceso;
urlCorrecta = true;

//Obtiene el contenido de la caja de texto
String aux = cajaTexto.getText();

//Comprueba si el usuario ha introducido la cadena "HTTP", sino lo ha
// hecho se añade automáticamente


if (!aux.substring(0,7).toUpperCase().equals("HTTP://"))
aux = "http://" + aux;
//Se crea objeto URL con la dirección especificada (Estructura try-catch para capturar cualquier posible error
//que se pueda producir al ejecutar el bloque de instrucciónes existentes en try)

try
{
urlAcceso = new URL(aux);
//Se especifica que se abra en otra página web (blank)
getAppletContext().showDocument(urlAcceso,"_blank");
}
catch (Exception e)
{
urlCorrecta = false;
}
//Se escribe en la caja de texto la dirección URL con el HTTP añadido
cajaTexto.setText(aux.toString());

repaint();

}

}    

EJERCICIO. Crear un applet que tenga dos botones. Cuando se pulse el primer botón tendrá que dirigirse a un buscador (ejem: www.google.com), y cuando se pulse el segundo botón se abrirá un webmail (ejem: www.hotmail.com).

Manejo del teclado

Pulsa cualquier tecla o la tecla de ESPACIO y verás el resultado:

Tu navegador no está preparado para ejecutar JAVA

Pincha en este enlace para descargar o visualizar el código

El código del applet es el siguiente:

import javax.swing.JLabel;
import java.awt.*;
import javax.swing.JButton;
import javax.swing.*;
import java.awt.event.*;

public class eventos2 extends JApplet {

 

JButton jButtonActualizar = new JButton();
GridBagLayout gridBagLayout1 = new GridBagLayout();
JLabel jLabelEtiqueta = new JLabel();
Container contenedor;

public eventos2() {


try {

contenedor = this.getContentPane();
contenedor.setLayout(gridBagLayout1);
jButtonActualizar.setText("Actualizar");

jButtonActualizar.addKeyListener(new
manejadorTeclado(this));


jLabelEtiqueta.setFont(new java.awt.Font("Dialog", Font.BOLD, 11));
jLabelEtiqueta.setText("Saludos a todos");

contenedor.add(jButtonActualizar,
new GridBagConstraints(0, 1, 1, 1, 0.0, 0.0
, GridBagConstraints.CENTER, GridBagConstraints.NONE,
new Insets(0, 0, 0, 0), 18, 0));

contenedor.add(jLabelEtiqueta,
new GridBagConstraints(0, 0, 1, 1, 0.0, 0.0
, GridBagConstraints.CENTER, GridBagConstraints.NONE,
new Insets(0, 117, 0, 112), 0, 0));

} catch (Exception ex) {
ex.printStackTrace();
}
}

public void setEtiqueta(String cadena)
{
jLabelEtiqueta.setText(cadena);
}

}

class manejadorTeclado extends KeyAdapter {

eventos2 referenciaObjeto;

 

 


public manejadorTeclado(eventos2 obj)
{
referenciaObjeto = obj;
}

public void keyPressed(KeyEvent e) {

//Se usa StringBuffer ya que se puede modificar su contenido siempre que haga falta
StringBuffer cad = new StringBuffer();

//UNICODE.....Texto que puede estar en cualquier idioma y puede ser codificado para su uso informático.

//Retorna el código de la tecla pulsada.
switch(e.getKeyCode())
{
//Comparamos con las constantes ya definidas en la propia clase KeyEvent
case KeyEvent.VK_ENTER:
cad.append("ENTER");

break;
case KeyEvent.VK_SPACE:
cad.append("ESPACIO");
break;
case KeyEvent.VK_UP:
cad.append("ARRIBA ");
break;
case KeyEvent.VK_DOWN:
cad.append("ABAJO");
break;
case KeyEvent.VK_LEFT:
cad.append("IZQUIERDA");
break;
case KeyEvent.VK_RIGHT:
cad.append("DERECHA");
break;
case KeyEvent.VK_F1:
cad.append("F1");
break;
case KeyEvent.VK_ESCAPE:
cad.append("ESCAPE");
break;
case KeyEvent.VK_HOME:
cad.append("INICIO");
break;
case KeyEvent.VK_END:
cad.append("FIN");
break;
//Si no coincide con ninguna de las constantes=>se retorna el carácter asociado a dicha tecla
default:
cad.append(e.getKeyChar());

}

referenciaObjeto.setEtiqueta(cad.toString());
}


}    

EJERCICIO. Construir un applet en el que aparezca una cadena de texto. Esta cadena de texto se podrá desplazar mediante los cursores.

Volver al sumario