viernes, 13 de julio de 2012

2.2.1 Elementos de la Interfaz Gráfica

Elementos de una Interfaz
Una interfaz gráfica debe contener elementos en los que se puedan definir etiquetas, campos de texto, botones, barras deslizadoras, etc.
A continuación mostraremos algunos elementos de la interfaz gráfica y las diferentes maneras de utilizarlos:
Etiqueta (Label)
La etiqueta nos ayuda a definir los campos de texto que tecleará el usuario, la clase para definida para esto es Label y existen diferentes maneras de construir una etiqueta:
   Label (),       Label (String str),        Label (String str, int alignment).
El primer constructor crea una etiqueta en blanco, el segundo crea una etiqueta con el String mandado como parámetro y el tercero crea una etiqueta con el String mandado y definiendo con how la manera en la que se alineará esta etiqueta, siendo how uno de : Label.LEFT, Label.RIGHT o Label.CENTER.
Un ejemplo de el uso de etiquetas pudiera ser:
import java.awt.*;
import java.applet.*;
// <applet width="200" height="100" code="AppletInterfaz1"></applet>
public class AppletInterfaz1 extends Applet {
   Label l1, l2, l3;
   public AppletInterfaz1() {
      l1 = new Label();
      l2 = new Label("etiqueta 2");
      l3 = new Label("etiqueta 3", Label.CENTER);
      add(l1);
      add(l2);
      add(l3);
   }
}

Mostrando el applet:

Observamos como es difícil entender que existe una etiqueta en blanco ahí, y que la tercera etiqueta está alineada al centro.
Mas adelante mostraremos de nuevo este applet, pero utilizando clases que nos pueden servir para mejorar nuestra interfaz haciendo uso de administradores de distribución que son llamados Layout Managers. Por ahora continuemos con otros elementos.
Pudiera quedarnos la duda de si ya creamos l1 como un objeto de la clase Label, pero sin etiqueta, como la pudiéramos cambiar, esto lo hacemos a través del método setText() ya manejado anteriormente, de tal manera que pudiéramos utilizar   l1.setText("etiqueta 1"); y así cambiar nuestra etiqueta.
Campo Texto (TextField)
Un campo texto nos sirve para introducir un dato del usuario a nuestra aplicación, teniendo diferentes maneras de introducir un campo texto:
     TextField(),      TextField(int numChars),   TextField(String str),    TextField(String  str,  int numChars).

El primer constructor crea un campo texto, como ya lo hemos utilizado anteriormente, el segundo constructor nos sirve para definir el numero de caracteres que queremos puedan verse al introducir algún dato, el tercer constructor nos sirve para definir algún texto inicial que queramos le aparezca al usuario y el último constructor es para usar ambas opciones, que le aparezca al usuario un cierto texto inicialmente y tener un campo texto con una cantidad específica de caracteres a ver.
Un ejemplo del uso de estos constructores puede ser:
import java.awt.*;
import java.applet.*;
// <applet width="300" height="100" code="AppletInterfaz2"></applet>
public class AppletInterfaz2 extends Applet {
   TextField t1, t2, t3, t4;
   public AppletInterfaz2() {
      t1 = new TextField();
      t2 = new TextField(10);
      t3 = new TextField("Texto3");
      t4 = new TextField("Texto4",10);
      add(t1);
      add(t2);
      add(t3);
      add(t4);
   }
}
Y la manera de visualizar esto sería:

De esta forma observamos como el segundo y cuarto texto son más grandes debido al tamaño que le pusimos al constructor.
Botón (Button)
Con esta clase podemos definir algún botón para que el usuario de alguna acción que posteriormente pueda ser escuchada como un evento.
La forma de crear botones son:
       Button (),        Button(String   str).

Crear un botón sin etiqueta o crear un botón con etiqueta. La manera de cambiar la etiqueta a un botón o de asignar una si no la tiene seria utilizando el método setLabel().
Una aplicación que muestra el uso de estos dos constructores seria:
import java.awt.*;
import java.applet.*;
// <applet width="200" height="100" code="AppletInterfaz3"></applet>
public class AppletInterfaz3 extends Applet {
   Button b1, b2;
   public AppletInterfaz3() {
      b1 = new Button();
      b2 = new Button("boton2");
      add(b1);
      add(b2);
   }
}
La forma de visualizar esto es:

De esta manera podemos revisar las dos formas de crear un botón.
Opciones (Choice)
Esta clase nos ayuda a utilizar menús de opciones, donde el usuario fácilmente puede seleccionar una opción. La manera de hacer esto es con el constructor:
       Choice().

Al crear un objeto de este tipo se le añaden las opciones que se desea aparezcan en el menú, utilizando el método add() o addItem() y de esta manera se van añadiendo las opciones al menú. Para saber que valor se selecciono se utiliza el método getSelectedItem() o el método getSelectedIndex(), el primero toma el String del elemento seleccionado y el segundo te da el índice del elemento seleccionado. Veamos una aplicación de este elemento gráfico:
import java.awt.*;
import java.applet.*;
import java.awt.event.*;
// <applet width="200" height="200" code="AppletInterfaz4"></applet>
public class AppletInterfaz4 extends Applet implements ItemListener{
   Choice ch1, ch2;
   public AppletInterfaz4() {
      ch1 = new Choice();
      ch2 = new Choice();
      ch1.add("Primero");
      ch1.add("Segundo");
      ch1.add("Tercero");
      ch1.add("Cuarto");
      ch2.add("Uno");
      ch2.add("Dos");
      ch2.add("Tres");
      ch2.add("Cuatro");
      ch2.add("Cinco");
      ch1.select("Cuarto");
      add(ch1);
      add(ch2);
      ch1.addItemListener(this);
      ch2.addItemListener(this);
   }

   public void itemStateChanged(ItemEvent ie) {
      repaint();
   }

   public void paint(Graphics g) {
      String msg = "Primer menu = ";
      msg += ch1.getSelectedItem();
      g.drawString(msg, 0,100);
      msg = "Segundo menu = ";
      msg += ch2.getSelectedItem();
      g.drawString(msg, 0,140);
   }
}

Algunos ejemplos utilizando este applet serian (inicial y seleccionando otros valores):
             
Además de los métodos mencionados para esta clase están getItemCount() que te da el número de elementos en la lista y hay otros más que te conviene revisar en la clase Choice.
Lista (List)
Esta clase provee una compacta lista de múltiples opciones con el uso de la barra deslizadora. Los constructores de esta clase son:
    List(),     List( int lineas) ,   List (int lineas, boolean seleccionmultiple).


El primer constructor crea una lista con el poder de selección de un dato a la vez, el segundo constructor especifica el número de líneas que serán visibles al mismo tiempo y el tercero con la opción de selección múltiple en true, permitirá que se puedan seleccionar mas de un elemento a la vez. El método add() puede ser utilizado para añadir elementos a la lista, pero tiene dos opciones, la de añadir un String o la de añadir un String en una cierta posición.
La siguiente es una aplicación que lo utiliza:
import java.awt.*;
import java.applet.*;
import java.awt.event.*;
// <applet width="300" height="200" code="AppletInterfaz5"></applet>
public class AppletInterfaz5 extends Applet implements ItemListener{
   List ch1, ch2;
   public AppletInterfaz5() {
      ch1 = new List();
      ch2 = new List();
      ch1.add("Primero");
      ch1.add("Segundo");
      ch1.add("Tercero",0);
      ch1.add("Cuarto",0);
      ch2.add("Uno");
      ch2.add("Dos");
      ch2.add("Tres");
      ch2.add("Cuatro");
      ch2.add("Cinco");
      add(ch1);
      add(ch2);
      ch1.addItemListener(this);
      ch2.addItemListener(this);
      }

   public void itemStateChanged(ItemEvent ie) {
      repaint();
   }

   public void paint(Graphics g) {
      String msg = "Primera lista = ";
      msg += ch1.getSelectedItem();
      g.drawString(msg, 0,100);
      msg = "Segunda lista = ";
      msg += ch2.getSelectedItem();
      g.drawString(msg, 0,140);
   }
}

Y esto se mostrará de la siguiente manera (al inicio y con valores seleccionados):
                          
Área de Texto (TextArea)
Este elemento sirve para tomar datos o desplegar datos que tendrán más de una línea. Existen varios constructores:
 TextArea(),    TextArea(int lineas, int caracteres),  TextArea(String str), 
  TextArea(String, str, int lineas, int caracteres), TextArea(String str, int lineas, int caracteres, int barra)

Donde líneas es el número de líneas, caracteres es el número de caracteres, str es el String que deseamos aparezca y barra puede ser uno de los siguientes: SCROLLBARS_BOTH, SCROLLBARS_HORIZONTAL_ONLY, SCROLLBARS_VERTICAL_ONLY, SCROLLBARS_NONE, donde estos se deben utilizar con el nombre de la clase como sufijo, ya que son constantes estáticas, ejemplo: TextArea.SCROLLBARS_BOTH. 
Un ejemplo de aplicación que use esto seria:
import java.awt.*;
import java.applet.*;
// <applet width="400" height="400" code="AppletInterfaz6"></applet>
public class AppletInterfaz6 extends Applet {
   TextArea ta1, ta2, ta3;
   public AppletInterfaz6() {
      ta1 = new TextArea();
      ta2 = new TextArea("",10,12,TextArea.SCROLLBARS_HORIZONTAL_ONLY);
      ta3 = new TextArea("",5,5,TextArea.SCROLLBARS_BOTH);
      add(ta1);
      add(ta2);
      add(ta3);
   }
}
La manera en la que se visualizaría es:


Existen otros elementos gráficos, es importante que entres a la biblioteca de clases de la awt en java para que te familiarices con ellas.
Enlaces:

(en español)

No hay comentarios:

Publicar un comentario