Capítulo 13. Equipo de herramientas de ventana abstracta.
AWT(abstrac windowing toolkit, equipo de herramientas de
ventana abstracta).
Componentes
Un componente (component) es una clase abstracta que encapsula todos los
atributos de un componente visual.
Todos los elementos de la interfaz de usuario que se
visualizan en la pantalla y que interactuan con un usuario
son subclases de component.
Subclases de Component
- Container (contenedor). Contendrá métodos adicionales que permiten que otros
componentes se aniden dentro de el.
- Panel. Es una subclase de container.
Se pueden aņadir otros componentes a panel mediante el
método add (aņadir), modificar estos componentes con move
(desplazar), resize (cambiar el tamaņo).
- Canvas (lienzo). En el se puede pintar cualquier componente.
- Label (etiqueta). Es una subclase de canvas.
- Button (botón). Componente que se puede utilizar para ejecutar alguna
acción cuando el usuario lo pulsa y lo libera.
- Checkbox (cuadro de comprobación). Se utiliza para seleccionar una condición booleana.
Cuando se construye un checkbox se le pasa un string y
opcionalmente un boolean que especifica el estado inicial
de la marca de comprobación.
Se puede establecer y obtener el estado actual de la marca
de comprobación con los métodos setstate y getestate
respectivamente.
- Checkboxgroup. Permite crear un grupo de opciones que solo se pueden
seleccionar de una en una.
Los métodos getcheckboxgroup y secheckboxgroup se utilizan
para obtener y establecer el grupo al que pertenece un chekbox.
- Getcurrent, setcurrent. Obtienen y establecen,
respectivamente, el checkbox seleccionado actualmente.
- Choice (opción). Se utiliza para crear un menú de selección emergente.
El método additem (aņadir elemento) aņade nuevas cadenas a
la clase choice.
- Countitems (contar elementos). Devuelve el numero de
elementos de el menú de opciones.
- List (lista). Proporciona una lista de selección compacta, de elecciones
múltiples y de desplazamiento.
- Scrollbar (barras de desplazamiento). Se utiliza para seleccionar valores continuos entre un
mínimo y un máximo especificados.
- Textfield (campo de texto). Implementa un área de entrada de texto de una sola línea.
- Seteditable. Congela el contenido del textfield.
- Iseditable. Comprueba la posibilidad de edición.
- Gettext. Obtiene el valor actual del campo.
- Settext. Establece el valor actual.
- Setechocaracter. Establece el carácter único que mostrará el textfield
para todos los caracteres que se introduzcan, muy útil
para esconder códigos o información secreta.
- Textarea (área de texto). Es un editor de texto muy simple.
- Appendtext. Aņade su parámetro string al final del buffer.
- Inserttext. Inserta su string en una posición dada, de base 0 que
comienza al principio del buffer.
- Replacetext. Copia caracteres del string a partir del primer índice
y hasta el segundo.
Organización
Cada objeto container tiene un gestor de organización, Layoutmanager.
Java tiene varias clases de layoutmanager predefinidas:
- Flowlayout (organización continuada). Los componentes se colocan desde la esquina superior
izquierda, de izquierda a derecha y de arriba a abajo.
- Borderlayout (organización con limites). Tiene cuatro componentes estrechos y de anchura fija en los
extremos, y un área grande en el centro que se amplia y
contrae en dos dimensiones, cada una de estas áreas tiene
un nombre que es un string: north, south, easty, west,
representan los cuatro lados y center el área del centro.
- Insets (recuadros). Se utiliza para recuadrar un panel.
- Cardlayout (organización con tarjetas).
- Window (ventana). Parecido a panel con la excepción de que crea su propia
ventana de nivel superior, en vez de estar contenida dentro
de otro panel.
- Frame (marco). Tiene una barra de titulo, esquinas para cambiar el tamaņo
y una barra de menú.
Componentes de menú
Cada ventana de nivel superior, puede tener una barra de
menú asociada con ella. Un objeto menubar (barra de menú)
puede contener varios objetos menú en él.
Los menús tienen una lista de objetos menuitem (elemento de
menú) dentro de ellos.
Menú, es una subclase de menuitem, lo que permite anidar
submenus de forma jerárquica.
Eventos
Cualquier componente puede gestionar eventos
sobrescribiendo ciertos métodos llamados por la
implementación por defecto de método handleevent (gestionar
evento) de component, se llama a dicho método con una
instancia de la clase event (evento).
Estos son algunos ejemplos:
A los eventos relacionados con el ratón, se les llama con
una copia del evento original y la ubicación (x, y) del
evento.
- MouseEnter se le llama cuando el ratón entra por
primera vez en un component.
- MouseExit se le llama cuando el ratón abandona el
componente.
- MouseMove se le llama cuando se mueve por el
componente.
- MouseDown se le llama cuando se pulsa primero
cualquier botón del ratón.
- MouseDrag se le llama cuando el ratón se mueve con un
botón pulsado.
- MouseUp se le llama cuando se libera el ratón.
- Keydown se le llama cuando se pulsa una tecla.
- Keyup se le llama cuando se libera una tecla.
- Shifthdown comprueba si esta pulsada la tecla shift.
- Controldown comprueba si esta pulsada la tecla control.
Para tratar eventos especiales como retornos desde los
componentes button, scrollbar y menu, hay que reescribir el
método action (acción). Se llamara a este método con el
evento original y un segundo parámetro que es el componente
de la UI que creo el evento de acción. Se debe inspeccionar
este objeto para ver que componente ha provocado la acción
y seleccionar así el gestor correcto para cada componente.
Se puede utilizar el operador instanceof (instancia de)
para ver si el objeto es de un tipo en particular, como
button, antes de convertir su tipo.