¿Cómo hacer un applet?

 

En este apartado trataremos de explicar todo lo que contiene, un código de un applet. Este applet es la solución del problema de la ‘Colección de cromos’ para una colección.

import java.applet.Applet;

import java.awt.*;

import java.awt.event.*;

import java.applet.*;

import java.util.Random;

La palabra import indica que son declaraciones que le avisan al compilador que este programa usará diferentes clases.

Por ejemplo, en el caso de java.applet.*  se llaman a todas las clases que pertenecen al paquete (packages) applet.  

public class Coleccion_cromos extends Applet implements ActionListener {

En esta línea se define una nueva clase, donde se especifica que es un applet, y dispone de todos los métodos de la clase applet.

private Panel panelPrimero, panelSegundo, panelSegundoPosicion1, panelSegundoPosicion1Forma1,panelSegundoPosicion1Forma2, panelSegundoPosicion1Forma3,panelSegundoPosicion1Forma4, panelSegundoPosicion2,panelSegundoPosicion2Forma1,panelSegundoPosicion2Forma2,

panelTercero, panelTerceroForma1, panelTerceroForma2;

   

private Label labelColeccion,labelPregunta1,labelPregunta2,labelPregunta3,

labelCromos,labelCompra,labelTamañoColeccion,labelEsperanza1,labelEsperanza2, labelContado,labelError,labelContadorPaquetes,labelCompleto,label1, label2,label3,label4,label5,label6,label7,label8,label9,label10;

   

private List listColeccion,listNumeroCromos;

   

private Button buttonComprar;

   

private TextField textfieldContador,textfieldCromos,textfieldEsperanza,

textfieldContadorPaquetes;

   

private TextArea textareaCompra,textareaColeccion;

   

public static Random aux = new Random ();

static final int max_compra=100;

static final int max_coleccion=10;

int contadorCompra=0;

int contadorPaquetes=0;

int contadorColeccion=0;

int [] compra = new int [max_compra];

int [] coleccion= new int [max_coleccion];

En esta parte, se declaran  todas las variables que se van a utilizar a nivel global. Se pueden ver todos los Panel, Label, List, Button TextField y TexArea que se utilizarán. Todas estas variables forman parte de la interfaz gráfica. El resto de variables que no son propiamente de la interfaz gráfica son utilizadas para  hacer los cálculos propios del programa, y obtener la solución del problema.

A continuación se explica el contenido del método init(). Este método incluye todos los componentes que se cargarán en cuanto se ejecute el applet. No se ha incluido la totalidad del método por la densidad de código.

public void init(){

        Font fuenteGrande = new Font( "SeansSerif",Font.ITALIC,15 );

        Font fuentePequeña=new Font ( "SeansSerif",Font.ITALIC,12 );

        this.setLayout(new GridLayout(3,1));

        this.setSize(900,600);

        this.setFont(fuentePequeña);

       

        panelPrimero =this.createPanel(this);

        panelPrimero.setFont(fuenteGrande);

        labelPregunta1 =addLabelToPanel(panelPrimero,"Hemos comenzado una  

        colección  de cromos que consta de 'n' cromos diferentes.");

        labelPregunta2 =addLabelToPanel(panelPrimero,"Compramos los cromos de      

        'k'  en 'k' y el vendedor nos asegura que la probabilidad de obtener    

        cada cromo de cualquier tipo es la misma.");

        labelPregunta3 =addLabelToPanel(panelPrimero,"¿Cuántos cromos      

        esperamos comprar para completar la coleccion?");

       

                 …}

Este método está definido para incluir un evento, es decir, que se ejecutara cuando el usuario ejecute un evento, en nuestro caso es un botón. Dentro de esta función se ha creado el código que resuelve el problema y devuelve al usuario un valor. Este método se encarga el de gestionar el resto de métdos básicos, como start () y destroy ().

 

public void actionPerformed(ActionEvent event) {

        int i;

        double esp;

          

        if (event.getActionCommand().equals("buttonComprar")) {

           

             String listaColeccion=listColeccion.getSelectedItem();

             int numColeccion=Integer.valueOf(listaColeccion).intValue();

            

             String listaNumeroCromos=listNumeroCromos.getSelectedItem();

             int numCromos=Integer.valueOf(listaNumeroCromos).intValue();

            

             if (numColeccion>=numCromos){

                esp=esperanza(numColeccion,numCromos);

                textfieldEsperanza.setText(""+esp);

                 if (numColeccion==contadorColeccion){

                     labelCompleto.setVisible(true);

                 }

                 else{

                     for (i=1;i<=numCromos;i++){

                          compra[i-1]=aleatorio(numColeccion);

                          textareaCompra.append(""+compra[i-1]+", ");

                          contadorCompra++;

                          textfieldContador.setText(""+contadorCompra);

                                  int j=0;

                                   

                      while((coleccion[j]!=compra[i1])&&(j<contadorColeccion))

                                {j++;}

                                if (coleccion[j]!=compra[i-1]) {

                                    coleccion[j]=compra[i-1];

                                    contadorColeccion++;

                                }     

                     }

                     contadorPaquetes++;

                     textfieldContadorPaquetes.setText(""+contadorPaquetes);

                     ordenarVector(contadorColeccion, coleccion);

                     for (i=0; i<contadorColeccion; i++){

                         if (coleccion[i]==1)label1.setForeground(Color.black);

                         if (coleccion[i]==2)label2.setForeground(Color.black);

                         if (coleccion[i]==3)label3.setForeground(Color.black);

                         if (coleccion[i]==4)label4.setForeground(Color.black);

                         if (coleccion[i]==5)label5.setForeground(Color.black);

                         if (coleccion[i]==6)label6.setForeground(Color.black);

                         if (coleccion[i]==7)label7.setForeground(Color.black);

                         if (coleccion[i]==8)label8.setForeground(Color.black);

                         if (coleccion[i]==9)label9.setForeground(Color.black);

                        if(coleccion[i]==10)label10.setForeground(Color.black);

                    }   

                }

             }

             else{

             panelTerceroForma2.setVisible(true);

             }

        } 

    }

Siguiendo un diseño descendente se han incorporado, funciones y acciones auxiliares, para facilitar la programación. Pueden acceder al código de las funciones auxiliares y al resto de métodos de todos los applets en el anexo de este proyecto.

 
Pede acceder al código de los applets realizados:

- Jurado Popular o Juez
-Colección cromos 1
-Colección cromos 2 y Clase  canvas histo

Incluir un applet en una página HTML

 


Una característica de los applets es que puede ser utilizado dentro de una página HTML. En este proyecto se han incluido todos los applets en una de ellas.

 

<HTML>

<HEAD>

<TITLE>

Coleccion_cromos_1

</TITLE>

</HEAD>

<BODY>

<APPLET

CODEBASE = "."

CODE     = "Coleccion_cromos_1.class"

WIDTH    = 900

HEIGHT   = 600

ARCHIVE="file:/C:/…/bluejcore.jar, file:/C:…/junit.jar,

file:/C:i/Desktop/PFC/"

> 

</APPLET>

</BODY>

</HTML>

Para llamar a un applet desde una página HTML hay que utilizar la etiqueta <APPLET>  al comienzo de la declaración  y otra al final  </APPLET>.

Dentro de la etiqueta applet el parámetro más importante es CODE que señala el nombre del archivo cuya extensión es .class, y cuyo nombre coincide con el de la clase que describe el applet.

Los valores de los parámetros WIDTH y HEIGHT determinan las dimensiones del applet. En este caso el applet tiene una anchura de 900 y una altura de 600 píxeles.

El atributo ARCHIVE se utiliza para localizar los ficheros .jar que  utiliza el applet.