PROGRAMACION EN JAVA

ESTRUCTURAS DE DATOS


Componentes Basicos de una Interfaz Grafica con el Usuario


  1. Introduccion
  2. Rotulos
  3. Botones para Pulsar
  4. Campos de Textos
  5. Botones de Opcion
  6. Casillas de Verificacion y botones de Radio
  7. Listas
  8. Paneles
  9. Eventos de Raton
  10. Eventos de Teclado
  11. Administrador de Diseños

  1. 1.Introduccion

    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.

  1. 2. Rotulos.

    Un rotulo es un área en la que se exhibe una sola linea de texto estático (solo de lectura) en una GUI, ademas el usuario no puede modificar este rotulo. Los rotulos se crean con la clase Label.
    Contructores:
  2. public Label() //Crea un rotulo vacio.
  3. public Label(String s) // Crea un rotulo con la cadena s.
  4. public Label(String s, int pos) // Crea un rotulo con la cadena s en la posición pos. donde: pos = 0 (LEFT), 1 (CENTER), 2(RIGHT)
  5. Metodos:
  6. setText( String s ) // Asigna a s como cadena del rotulo.
  7. getText() // Devuelve la cadena asignada al rotulo.
  8. setAlignment(int pos) //Asigna una nueva posición pos al rotulo.

  9. Para los rotulos la fuente por defecto es "Currier", el color es negro y el tamaño es 10. Por otro lado la clase Label deriva de la clase Component y a su vez esta de Object.
  1. 3. Botones Para Pulsar.

    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.

    Contructores:
  2. public Button() //Crea un boton sin rotulo.
  3. public Button(String s) // Crea un boton con el rotulo s.
  4. Metodos:
  5. setLabel( String s ) // Asigna un rotulo s al boton.
  6. getLabel() // Devuelve el rotulo de un boton.

  7. Los botones son manejados por eventos, esto quiere decir, que cuando el usuario hace clic sobre un boton, este se activa e inicia algun proceso. Cada vez que se inicia un nuevo evento por un boton, el evento almacena el objeto en la variable target la cual se utilizará para posterior verificación, luego tenemos la variable arg, la cual almacena el nombre del objeto que generó el evento. Por otro lado la clase Button deriva de la clase Component y a su vez esta de Object.
  1. 4. Campos de Texto.

    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.

    Contructores:
  2. public TextField() //Crea un campo texto vacio.
  3. public TextField(int col ) // Crea un campo texto vacio con la cantidad de columna col.
  4. public TextField(String s) // Crea un campo texto con la cadena s.
  5. public TextField(String s, int col) // Crea un campo texto con la cadena s y el tamaño col.
  6. Métodos:
  7. getSelectedText( ) // Devuelve el texto seleccionado del campo texto.
  8. getText() // Devuelve el texto del campo texto.
  9. Selected( int ini, int fin ) // Devuelve el texto desde la posicion ini hasta la posicion fin.
  10. setEditable(boolean b) // Permite o no la introduccion de datos en el campo texto.
  11. isEditable() // Verifica si en el campo texto se puede introducir datos.
  12. setEchoCharacter(Char c) //Especifica al carácter c como el carácter de ocultamiento en un password.

  13. Por otro lado la clase TextField deriva de la clase TextComponent y a su vez esta de Component que deriva de Object.
  1. 5. Botones de Opcion.

    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.

    Contructor:
  2. public Choice() //Crea un boton sin opción.

  3. Nota: Cuando se crea un boton de opcion, este se crea sin opciones, ya que se colocarán con el método addItem.

    Métodos:
  4. countItem() // Devuelve el numero de elementos del boton choice.
  5. getItem(int index) // Devuelve el elemento de la posición index del boton choice.
  6. addItem( String s ) // Agrega una opción a un boton choice.
  7. getSelectedItem() // Devuelve el elemento seleccionado del boton choice.
  8. getSelectedIndex() // Devuelve el indice del elemento seleccionado del boton choice.

  9. Por otro lado la clase Choice deriva de la clase Component y a su vez esta de Object.
  1. 6. Casillas de Verificacion y Botones de Radio.

    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.

    Contructores:
  2. public Checkbox() //Crea una casilla de verificación sin rotulo.
  3. public Checkbox( String s ) //Crea una casilla de verificación con el rotulo s.
  4. Métodos:
  5. getLabel() // Devuelve el rotulo de la casilla de verificación.
  6. setLabel( String s ) // Asigna el rotulo s a la casilla de verificación.
  7. getState() // Devuelve el estado de una casilla de verificacion.
    Botones de Radio.
    Los botones de radio se diferencian de las casillas de verificación porque los primeros solo se admite que uno del grupo esté habilitado, mientras que las casillas admiten mas de uno. Los botones de radio se crean con la clase Checkbox y la clase CheckboxGroup.
    Contructores:
  1. public Checkbox( String x, CheckboxGroup c, boolean e ) //Crea un solo boton de radio con el rótulo s y el estado e, el boton de radio se agrega al CheckboxGroup c que ya existe.
  2. public CheckboxGroup( ) //Crea un grupo de botones de radio.
  3. Métodos:
  4. getLabel() // Devuelve el rotulo de un boton de radio .
  5. setLabel( String s ) // Asigna el rotulo s a un boton de radio.
  6. getState() // Devuelve el estado de un boton de radio.
  1. 7. Listas.

    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.

    Contructores:
  2. public List() // Crea una lista que permite seleccionar un elemento.
  3. public List(int i, boolean ms ) //Crea una lista con i número de elementos visibles y ms de selección multiple.
  4. Métodos:
  5. addItem() // Agrega un item a la lista.
  6. getSelectedItems() // Devuelve los items seleccionados.

    el Ejemplo siguiente crea una lista que muestra cuatro lineas a la vez y no permite seleccion multiple

    Lista seleccion simple

    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;
            }
        }
    

    1. 8. Paneles.

      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.

      Lista seleccion simple

    1. 9. Eventos de Raton(Mouse).

      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.

      Métodos:
    2. mouseEnter(Event e, int x , int y) //Maneja un evento cuando se entra al area de un componente con el puntero del raton.
    3. mouseExit(Event e, int x , int y) // Maneja un evento cuando se sale del area de un componente con el puntero del raton.
    4. mouseMove(Event e, int x , int y) // Maneja un evento cuando se mueve el raton.
    5. mouseDown(Event e, int x , int y) // Maneja un evento cuando se oprime el boton del raton.
    6. mouseUp(Event e, int x , int y) // Maneja un evento cuando se suelta el boton del raton.
    7. mouseDrag(Event e, int x , int y) // Maneja un evento cuando se arrastra el boton del raton.
    8. Constantes:
    9. public final static int MOUSE_DOWN; // Representa al evento raton-abajo .
    10. public final static int MOUSE_UP; // Representa al evento raton-arriba .
    11. public final static int MOUSE_MOVE; // Representa al evento raton-mover .
    12. public final static int MOUSE_EXIT; // Representa al evento raton-salir .
    13. public final static int MOUSE_ENTER; // Representa al evento raton-entrar.
    14. public final static int MOUSE_DRAG; // Representa al evento raton-arrastrar.

    1. 10. Eventos de Teclado.

      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.

      Métodos:
    2. keyDown(Event e, int key) //Maneja un evento cuando se oprime una tecla.
    3. keyUp(Event e, int key) // Maneja un evento cuando se suelta una tecla.
    4. Constantes:
    5. public final static int UP;
    6. public final static int LEFT;
    7. public final static int END;
    8. public final static int PGDN;
    9. public final static int F1 - F12;
    10. public final static int DOWN;
    11. public final static int RIGHT;
    12. public final static int HOME;
    13. public final static int PGUP;

    1. 11. Administrador de Diseños.

      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:

      Administradores de Diseño FlowLayout.
      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).
      Constructores:
    2. FlowLayout() // Construye un FlowLayout con alineación al centro.
    3. FlowLayout( int a) // Construye un FlowLayout con alineación indicada en a.
    4. FlowLayout(int a, int h, int v ) // Construye un FlowLayout con alineaciónindicada en a, ademas con un espacio horizontal h entre componentes y un espacio vertical v entre componentes.
    5. Constantes:
    6. public final static int CENTER;
    7. public final static int LEFT;
    8. public final static int RIGHT;
    9. En la alineación se debe especificar el modo, con alguna de las constantes. Normalmente la alineacion por defecto es CENTER (centrado).
      Administradores de Diseño BorderLayout.
      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).
      Constructores:
    10. BorderLayout() // Construye un BorderLayout.
    11. BorderLayout( int s) // Construye un BorderLayout separando una distancia s entre areas.

    12. Adiministrador de Diseño GridLayout.
      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).
      Constructores:
    13. GridLayout(int f, int c) // Construye un GridLayout con f filas y c columnas.
    14. GridLayout(int f, int c, int h, int v) // Construye un GridLayout con f filas y c columnas, ademas separando una distancia en pixeles h horizontal y v vertical entre componentes.

    15. 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.




    [Anterior] [Siguiente] [Volver]