Escribir Applets

El c�digo de dibujo del applet Simple (implementado en su m�todo paint) no es bueno. No soporta scroll. Una vez que el texto alcanza el final del rect�ngulo de pantalla, no podemos ver ning�n nuevo texto. Aqu� tenemos un ejemplo del problema.

La cura m�s sencilla para este problema es usar un componconte prefabricado de interface de usuario que tenga el comportamiento correcto.

.�Componentes UI Pre-Fabricados

El AWT suministra los siguientes componentes UI (las clases que implementan cada componente se list�n entre par�ntesis):

  • Botones (java.awt.Button)
  • Checkboxes (java.awt.Checkbox)
  • Campos de texto de una-l�nea (java.awt.TextField)
  • Grandes campos de texto y �rea de edici�n (java.awt.TextArea)
  • Etiquetas (java.awt.Label)
  • Listas (java.awt.List)
  • Listas desplegables de opciones (java.awt.Choice)
  • Deslizadores y Barras de Desplazamiento (java.awt.Scrollbar)
  • �reas de Dibujo (java.awt.Canvas)
  • Men�s (java.awt.Menu, java.awt.MenuItem, java.awt.CheckboxMenuItem)
  • Contenedores (java.awt.Panel, java.awt.Window y sus subclases)

.�M�todos para Usar Componentes UI en Applets

Como la clase Applet desciende de la clase Container del AWT, es f�cil a�adir componentes a los applets y usar controladores de distribuci�n para controlar la posici�n de los componentes en la pantalla. Aqu� tenemos algunos m�todos de Container que un applet puede usar:

add
A�ade el Component especificado.
remove
Elimina el Component especificaco.
setLayout
Selecciona el controlador de distribuci�n.

.�A�adir un Campo de Texto no Editable al Applet Simple

Para hacer que el applet Simple use un campo de texto no editable y scrollable, podemos usar la clase TextField. Aqu� est� el c�digo fuente revisado. Los cambios se muestran abajo:

//Importing java.awt.Graphics is no longer necessary
//since this applet no longer implements the paint method.
. . .
import java.awt.TextField;

    public class ScrollingSimple extends Applet {

    //Instead of using a StringBuffer, use a TextField:
    TextField field;

    public void init() {
        //Create the text field and make it uneditable.
        field = new TextField();
        field.setEditable(false);

	//Set the layout manager so that the text field will be
	//as wide as possible.
        setLayout(new java.awt.GridLayout(1,0));

	//Add the text field to the applet.
        add(field);
        validate();

        addItem("initializing... ");
    }

    . . .

    void addItem(String newWord) {
        //This used to append the string to the StringBuffer;
        //now it appends it to the TextField.
        String t = field.getText();
        System.out.println(newWord);
        field.setText(t + newWord);
        repaint();
    }

    //The paint method is no longer necessary,
    //since the TextField repaints itself automatically.

El m�todoinit crea un campo de texto no editable (un ejemplar de TextField). Seleccionar el control de distribuci�n del applet a uno hace el campo de texto tan ancho como sea posible y luego a�ade el campo de texto al applet.

Despu�s de esto, el m�todo init llama al m�todo validate (que Applet hereda de Component). Llamar a validate despu�s de haber a�adido uno o m�s componentes a un applet es un poco de vudu que nos asegura que los Component se dibujar�n a si mismos en la pantalla.

Abajo tenemos el applet resultante:

Pulsa sobre la imagen para ejecutar el applet...

COMPARTE ESTE ARTÍCULO

COMPARTIR EN FACEBOOK
COMPARTIR EN TWITTER
COMPARTIR EN LINKEDIN
COMPARTIR EN WHATSAPP
ARTÍCULO ANTERIOR

SIGUIENTE ARTÍCULO