Los parámetros

prev.gif (997 bytes)chapter.gif (1105 bytes)home.gif (1054 bytes)next.gif (998 bytes)

Introducción

La anchura y altura del applet

Otros parámetros


Los parámetros es la forma en la que se comunica la página web y el applet.

disco.gif (1035 bytes)applet2: Applet2.java

 

La anchura y altura del applet

Las dimesiones de la applet se establecen mediante los valores de los parámetros WIDTH y HEIGHT de la etiqueta applet.

La anchura y altura del applet se pueden establecer mediante la función setSize, de la cual existen dos versiones

        setSize(400,300);

o bien,

        setSize(new Dimension(400,300));

Donde Dimension, es una clase con dos miembros datos públicos width y height. Ambas sentencias establecen la dimensión del applet en 400 pixels de ancho y 300 pixels de alto.

Ahora bien, hemos de tener cuidado con esta sentencia ya que podría plantearse la siguiente situación contradictoria

<APPLET
  CODE     = "applet2.Applet2.class"
  ARCHIVE =  "applet2.jar"
  WIDTH    = 400
  HEIGHT   = 300
  HSPACE   = 0
  VSPACE   = 0
  ALIGN    = middle
>
</APPLET>
public class Applet2 extends Applet{
  public void init(){
     setSize(150,200);
  }
//...
}

En el appletviewer el tamaño de la ventana y tamaño del applet son distintos. La ventana del appletviewer es mayor que el applet. Sin embargo, en Internet Explorer 5.0 la ventana que aparece en el navegador y el applet tienen las mismas dimensiones, las dadas por los parámetros WIDTH y HEIGHT dejando sin efecto la sentencia setSize.

Para evitar posibles inconvenientes, el applet puede leer los datos asociados a los parámetros WIDTH y HEIGHT de la etiqueta APPLET mediante la función getParameter miembro de la clase base Applet, y después pasarle dichos datos a la función setSize para establecer el tamaño del applet.

En la función miembro init, getParameter miembro de la clase Applet lee el dato asociado al parámetro (WIDTH o HEIGHT), y devuelve un string, que ha de convertirse en un dato numérico de tipo int. Los valores numéricos se guardan en las variables locales ancho y alto, y luego, se pasan a la función setSize para establecer el tamaño del applet. De este modo el tamaño y disposición del applet está controlado por la página web en la que está insertado.

  public void init(){
     int ancho = Integer.parseInt(this.getParameter("WIDTH"));
     int alto = Integer.parseInt(this.getParameter("HEIGHT"));
     this.setSize(ancho,alto);
  }

Como vimos al estudiar el capítulo de las excepciones, la conversión de un string en un número es mejor llevarla a cabo, por razones de seguridad, en un bloque try...catch. En el caso de que el proceso de conversión falle, se crea y se lanza un objeto ex de la clase NumberFormatException que es capturado por el bloque catch para notificar este problema al usuario.

  public void init(){
     int ancho=400;	//valores por defecto
     int alto=300;
     try{
     	ancho = Integer.parseInt(this.getParameter("WIDTH"));
     	alto = Integer.parseInt(this.getParameter("HEIGHT"));
     }catch(NumberFormatException ex){
	System.out.println("Error en los parámetros WIDTH y HEIGHT");
     }
     this.setSize(ancho,alto);
  }

 

Otros parámetros

Normalmente, interrumpimos el proceso de creación del applet con el asistente en el primer paso, pero como ya se ha comentado, JBuilder nos proporciona un diálogo para añadir parámetros a la etiqueta APPLET.

En el segundo paso del asistente de creación de applet Applet Wizard Step 2 of 3 podemos definir los parámetros, generándose automáticamente el código que llee los valores asociados a dichos parámetros.

parametros.gif (7446 bytes)

Los parámetros que vamos a definir son tres, la posición (ABSCISA y ORDENADA) del mensaje que se va a imprimir en el applet, y el MENSAJE mismo. En la figura y en el cuadro adjunto se muestra la definición de cada uno de los parámetros

Nombre Tipo Variable Valor por defecto
ABSCISA int x 10
ORDENADA int y 20
MENSAJE String texto El primer applet

Una vez completado el primer parámetro, se pulsa el botón titulado Add Parameter para continuar con el siguiente. El campo  titulado Desc corresponde a la descripción del parámetro que es opcional.

Una vez pulsado el botón Finish, JBuilder genera los parámetros en el archivo .html, y genera el código fuente que lee los valores asociados a dichos parámetros, tal como se ve en los dos cuadros que se muestran a continuación. Asimismo, genera una función la redefinición de getParameterInfo de la clase base Applet que devuelve la información relativa a los parámetros pero que no tiene de momento interés

<APPLET
  CODEBASE = "."
  CODE     = "applet2.Applet2.class"
  NAME     = "TestApplet"
  WIDTH    = 400
  HEIGHT   = 300
  HSPACE   = 0
  VSPACE   = 0
  ALIGN    = middle
>
<PARAM NAME = "ABSCISA" VALUE = "10">
<PARAM NAME = "ORDENADA" VALUE = "20">
<PARAM NAME = "MENSAJE" VALUE = "El primer applet">
</APPLET>

El código generado por JBuilder incluye la definición de una función auxiliar getParameter con dos argumentos, el nombre del parámetro y su valor por defecto, esta función llama a getProperty de la clase System

 public class Applet2 extends Applet {
  boolean isStandalone=false;
  int x;
  int y;
  String texto;
//Get a parameter value
  
  public String getParameter(String key, String def) {
    return isStandalone ? System.getProperty(key, def) :
      (getParameter(key) != null ? getParameter(key) : def);
  }

  public void init() {
    try { x = Integer.parseInt(this.getParameter("ABSCISA", "10")); }
	 catch (Exception e) { e.printStackTrace(); }
    try { y = Integer.parseInt(this.getParameter("ORDENADA", "20")); } 
	catch (Exception e) { e.printStackTrace(); }
    try { texto = this.getParameter("MENSAJE", "El primer applet"); } 
	catch (Exception e) { e.printStackTrace(); }
    try {
    jbInit();
    }
    catch (Exception e) {
    e.printStackTrace();
    }
  }
//...
}

Podemos optar por conservar el código generado por el IDE o escribir nuestro propio código, de forma semejante al que hemos escrito para leer los parámetros WIDTH y HEIGHT. Ahora bien, los valores devueltos por getParameter y después convertidos se deben de guardar en variables de instancia para que luego puedan ser utilizadas por otras funciones miembro. Así, el valor del parámetro ABSCISA se guarda en el miembro dato x, el valor del parámetro ORDENADA en y, y el valor del parámetro MENSAJE en texto.

En la redefinición de paint, se muestra en el contexto gráfico g, el contenido del mensaje guardado en texto en la posición x e y mediante la llamda a la función drawString.

public class Applet2 extends Applet {
  int x;
  int y;
  String texto;

  public void init() {
    int ancho=250;	//valores por defecto
    int alto=100;
    x=10;
    y=20;
     try{
     	ancho=Integer.parseInt(this.getParameter("WIDTH"));
     	alto=Integer.parseInt(this.getParameter("HEIGHT"));
        x=Integer.parseInt(this.getParameter("ABSCISA"));
        y=Integer.parseInt(this.getParameter("ORDENADA"));
     }catch(NumberFormatException ex){
	        System.out.println("Error en los parámetros");
     }
     texto=this.getParameter("MENSAJE");

     this.setSize(ancho,alto);
  }
  public void paint(Graphics g){
    g.drawString(texto, x, y);
  }
}