Prácticas sobre Applets


Práctica 1

En esta práctica veremos como y cuando el navegador invova a los métodos init, start, stop, destroy y paint de los applets.

Para ello, debe realizarse un applet que contenga cuatro variables llamadas init_cont, start_cont, stop_cont, destroy_cont y paint_cont, las cuales deben ser inicializadas a 0 en su declaración.

Estas variables se usarán para contablilizar cuantas veces se llama a los métodos init, start, stop, destroy y paint del applet. El método paint debe incluir el código necesario para pintar el valor de estas variables.

Este applet debe incluirse dentro de una página HTML y visualizarse con el navegador. Así, una vez que se está ejecutando el applet deben realizarse estas operaciones y ver como afectan al valor de las variables:


Práctica 2

Una vez que se ha carga un applet en el navegador, este no puede descargarse y volver a cargarse de nuevo. Es necesario finalizar el programa navegador e invocarlo de nuevo.

Esto puede ser muy pesado cuando se está depurando un applet, ya que requiere mucho tiempo. Un método más rápido para visualizar los applets es usar el programa appletviewer en vez del navegador.

Para invocar appletviewer debe ejecutarse lo siguiente:

   appletviewer nombre_fichero_html
De esta forma, se abre una ventana donde se ejecutará nuestro programa.

Visualice el applet anterior utilizando appletviewer en vez del navegador. Explore también los comandos que están accesibles en la barra de menús del appletviewer.


Práctica 3

Cree un applet que presente unos ejes X e Y y sobre ellos dibuje la funcion SENO.

Una solución de esta práctica: Seno.java


Práctica 4

Realice un applet que implemente una calculadora. Debe incluir un display donde se presenten los números tecleados, un teclado numérico con operaciones y dígitos, memorias, o los elementos que usted desee incluir.

Preocúpese únicamente de codificar los puntos que estén relacionados directamente con la construcción del interface gráfico. Si lo desea puede reutilizar la siguiente clase, que se encarga de analizar las pulsaciones realizadas y enviar los resultados adecuados a la pantalla
class kernel implements ActionListener {

    boolean nuevo_num = true;  // se introducira nuevo numero
    float   acumulador = 0.0f; // valor acumulado
    String  ult_oper = "=";    // ultimo operador

    private Label lab;         // Label donde se presentan resultados

    // Al contructor debe pasarsele un Label que se utilizara para
    // presentar los valores tecleados y los resultados.
    public kernel (Label lab) {
	this.lab = lab;
    }


    // metodo invocado al pulsar un boton.
    public void actionPerformed(ActionEvent event) {

	String key   = event.getActionCommand();  // nombre del boton pulsado
	String s     = lab.getText();             // string del display

	float  valor = 0;                         // valor del display
	try {
	    valor = new Float(s).floatValue();
	} catch (Exception e) {
	    if (!key.equals("C")) return; // solo se acepta "C"
	}

	if ("0123456789".indexOf (key) != -1) { // es un digito

	    if (nuevo_num) {
		nuevo_num = false;
		lab.setText(key);
	    } else {
		lab.setText(s + key);
	    }

	} else if (key.equals(".")) { // punto decimal

	    if (nuevo_num) {
		nuevo_num = false;
		lab.setText("0.");
	    } else {
		lab.setText(s + key);
	    }

	} else if (key.equals("raiz")) { // raiz cuadrada 

	    valor = (float)Math.sqrt(valor);
	    lab.setText (String.valueOf(valor));
	    nuevo_num = true;

	} else if (key.equals("+/-")) { // cambio de signo

	    valor = -valor;
	    lab.setText (String.valueOf(valor));
	    nuevo_num = true;

	} else if (key.equals("C")) { // Limpiar estado

	    acumulador  = 0;
	    lab.setText ("0");
	    ult_oper = "=";
	    nuevo_num = true;

	} else {  // es + - * / =

	    char c = ult_oper.charAt(0);
		
	    switch (c) {
	    case '=': acumulador  = valor; break;
	    case '+': acumulador += valor; break;
	    case '-': acumulador -= valor; break;
	    case '*': acumulador *= valor; break;
	    case '/': acumulador /= valor; break;
	    }
	    ult_oper = key;
	    nuevo_num = true;
	    lab.setText (String.valueOf(acumulador));
	}
    }

Una solución de esta práctica: calculadora.java