|
PROGRAMACION EN JAVA |
|
Componentes Basicos de una Interfaz Grafica con el Usuario
Java es un lenguaje que posee herramientas para manejar graficos de alta resolucion, por ello nos permite crear aplicaciones visuales, graficos, aplicaciones dinámicas, etc. Todas estas herramientas se encuentran en el paquete java.awt también conocido como juego de herramientas abstractas (Abstract Windowing Toolkit). Este paquete se importa con la siguiente linea de codigo:import java.awt.*; Cuando importamos el paquete java.awt traemos a disposicion del programador un conjunto de componentes graficos, denominados Interfaz Gráfica con el Usuario (GUI, graphical user interface), dichos componentes estudiaremos a continuación como ser los rotulo, botones, lista, campos de textos y paneles.
Un boton es un componente en el que el usuario hace clic para disparar una acción específica. Los Botones se crean con la clase Button.
Un campo de texto es un área en la que se reciben entradas (datos) tecleadas por el usuario en una sola linea hasta que se oprima la tecla Enter. Estos datos se pueden utilizar en el programa. Los campos de texto tambien se pueden utilizar para exhibir información, son creados por la clase TextField.
Un boton de opcion es un componente que proporciona una lista de elementos entre los cuales el usuario puede escoger. Los Botones de opcion se crean con la clase Choice.
La clase Checkbox (casilla de verificación) sirve para crear botones de casilla de verificación y botones de radio. Estos son botones de estado, es decir, botones que tienen valores de encendido/apagado o verdadero/falso. La clase Checkbox hereda directamente de Component.
Las listas exhiben una serie de elementos de los cuales el usuario puede seleccionar uno o mas. Las listas se crean a partir de la clase List, que hereda directamente de la clase Component.
el Ejemplo siguiente crea una lista que muestra cuatro lineas a la vez y no permite seleccion multiple
import java.awt.*;
import java.applet.Applet;
public class Lista extends Applet {
public void init() {
List l = new List( 4,false );
l.addItem( "Mercurio" );
l.addItem( "Venus" );
l.addItem( "Tierra" );
l.addItem( "Marte" );
l.addItem( "Jupiter" );
l.addItem( "Saturno" );
l.addItem( "Neptuno" );
l.addItem( "Urano" );
l.addItem( "Pluton" );
add( l );
}
public boolean action( Event evt,Object obj ) {
if( evt.target instanceof List )
System.out.println( "Entrada de la Lista: " + obj );
return true;
}
}
Un panel es un contenedor, similar al contenedor applet, en donde se les puede agregar componentes. La clase panel hereda de la calse Container y la clase Applet hereda de Panel. El constructor Panel no recibe argumentos y no está sobrecargado. Los paneles se crean con la clase Panel. Ademas, todos los componentes que se agregan a un panel, se lo hace con el método add, similar a un applet. Podemos, por ejemplo, crear una barra de herramientas para la zona superior de la ventana de la aplicación o incorporarle una zona de estado en la zona inferior de la ventana para mostrar información útil al usuario. Para ello vamos a implementar dos Paneles:
class BarraHerram extends Panel {
public BarraHerram() {
setLayout( new FlowLayout() );
add( new Button( "Abrir" ) );
add( new Button( "Guardar" ) );
add( new Button( "Cerrar" ) );
Choice c = new Choice();
c.addItem( "Times Roman" );
c.addItem( "Helvetica" );
c.addItem( "System" );
add( c );
add( new Button( "Ayuda" ) );
}
}
class BarraEstado extends Panel {
Label texto;
Label mas_texto;
public BarraEstado() {
setLayout( new FlowLayout() );
add( texto = new Label( "Creada la barra de estado" ) );
add( mas_texto = new Label( "Información adicional" ) );
}
public void verEstado( String informacion ) {
texto.setText( informacion );
}
}
Ahora, para dar funcionalidad, debemos crear los objetos correspondientes a la barra de herramientas y a la barra de estado con new; al contrario que en C++, en Java todos los objetos deben ser creados con el operador new:
add( "North",tb = new ToolBar() );
add( "South",sb = new StatusBar() );
También vamos a incorporar un nuevo evento a nuestro controlador, para que maneje los eventos de tipo ACTION_EVENT que le llegarán cuando se pulsen los botones de la barra de herramientas o se realice alguna selección, etc.
case Event.ACTION_EVENT:
{
be.verEstado( evt.arg.toString() );
return true;
}
Cuando la aplicación reciba este tipo de evento, alterará el contenido de la barra de estado para mostrar la información de la selección realizada o el botón pulsado.
Ocurre un evento de raton cuando el usuario interactúa con el raton. Todos los metodos de ratón reciben tres argumentos: un eventos, una coordenada x y un y.
Ocurre un evento de teclado cuando el usuario interactúa con el teclado. Todos los metodos de teclado reciben dos argumentos: un eventos y una tecla.
Las GUI complejas requieren que cada componente se coloque en un lugar exacto. Estas GUI por lo regular consisten en multiples paneles, con los componentes de cada panel dispuestos en un orden específico. Los administradores de diseño acomondan los componentes en un contenerdor, por ejemplo una applet es un contenedor, a continuación veremos los siguientes administradores de diseños:
Este administrador es el que viene por defecto en Java, ya que lo hemos utilizado en los paneles y applets.
FlowLayout es el administrador de diseño mas básico y sus componentes los coloca de izquierda a derecha en el orden en que se agregan al contenedor, cuando llegan al borde derecho los componentes que se agregan continuan en la linea siguiente. Este administrador hereda de la clase Object e implementa la interfaz LayoutManager (administrador de diseño).
El administrador de diseño BorderLayout ( diseño de border ) acomoda a los componentes en cinco areas : North (norte), South (sur), East (este), West (oeste) y Center (centro). Este administrador hereda de la clase Object e implementa la interfaz LayoutManager (administrador de diseño).
El administrador de diseño GridLayout ( diseño de border ) divide el contenedor en una retícula que permite colocar lo componentes en filas y columnas. Se da el mismo tamaño a todos los componentes, ademas, los componentes ase agregan comenzando en la celda superior izquierza de la reticula y avanzando de izquierda a derecha hasta que se llena la fila. Este administrador hereda de la clase Object e implementa la interfaz LayoutManager (administrador de diseño).
Despues de definir el administrador a utilizar, se debe debe habilitar el administrador con el método setLayout( administrador ) de la clase Container.Todos los componentes que se deseen agregar a cada administrador se lo realiza con add(administrador, componente), donde el primer argumento es el administrador y el segundo es el componente a agregarse.
|
|
|