## Cómo usar la clase JLabel

Con la clase JLabel, se puede mostrar texto no seleccionable e imágenes. Si necesitamos crear un componente que muestre un sencillo texto o una imagen, reaccionando opcionalmente a la entrada del usuario, podemos hacerlo utilizando un ejemplar de JLabel o de una subclase personalizada de JLabel. Si el componente interactivo tiene estado, pobablemente deberíamos utilizar un button en vez de una etiqueta.

Aquí podemos ver una imagen de una aplicación que muestra tres etiquetas. La ventana está dividida entres filas de la misma altura, la etieueta de cada fila es lo más ancha posible.

> Intenta esto:
> 1. Compila y ejecuta la aplicación. El código fuente está en LabelDemo.java, y la imagen en middle.gif.
> 2. Redimensiona la ventana para poder ver cómo los contenidos de las etiquetas se sitúan con las áreas de dibujo.
>    Todos los contenidos de las etiquetas tienen el alineamiento vertical por defecto -- los contenidos están centrados verticalmente en el área de la etiqueta. La etiqueta superior que contiene texto e imagen, tiene alineamiento horizontal centrado. La segunda etiqueta, que sólo tiene texto, tiene alineamiento a la izquierda que es por defecto para las etiquetas de sólo texto. La tercera etiqueta, que contiene sólo una imagen, tiene alineamiento horizontal centrado, que es por defecto para las etiquetas sólo de imágenes.

Abajo puedes ver el código de LabelDemo.java que crea las etiquetas del ejemplo anterior.

    ImageIcon icon = new ImageIcon("images/middle.gif");
    . . .
    label1 = new JLabel("Image and Text",
    		    icon,
    		    JLabel.CENTER);
    //Set the position of the text, relative to the icon:
    label1.setVerticalTextPosition(JLabel.BOTTOM);
    label1.setHorizontalTextPosition(JLabel.CENTER);

    label2 = new JLabel("Text-Only Label");

    label3 = new JLabel(icon);

    //Add labels to the JPanel.
    add(label1);
    add(label2);
    add(label3);

#### El API Label

> Las siguientes tablas listan los métodos y constructores más utilizados de JLabel. Otros métodos están definidos por la clase Component. Incluyen setFont y setForeground. El API se divide en dos categorías:
> - Seleccionar u Obtener el Contenido de la Etiqueta
> - Ajuste Fino de la Apariencia de la Etiqueta

> Seleccionar u Obtener el Contenido de la Etiqueta
> Método | Propósito
> --- | ---
> JLabel(Icon) JLabel(Icon, int) JLabel(String) JLabel(String, Icon, int) JLabel(String, int) JLabel() | Crea un ejemplar de JLabel, inicializándolo para tener texto/imagen/alineamiento especificados. El argumento int especifica el alineamiento horizontal del contenido de la etiqueta dentro de su área de dibujo. El alineamiento horizontal debe ser una de las siguientes constantes definidas en el interface SwingConstants (que implementa JLabel): LEFT, CENTER, o LEFT.
> void setText(String) String getText() | Selecciona u obtiene el texto mostrado por la etiqueta.
> void setIcon(Icon) Icon getIcon() | Selecciona u obtiene la imagen mostrada por la etiqueta.
> void setDisplayedMnemonic(char) char getDisplayedMnemonic() | Selecciona u obtiene la letra que debería ser la tecla alternativa. Esto es muy útil cuando una etiqueta describe un componente (como un campo de texto) que tiene un tecla alternativa pero no puede mostrarla.
> void setDisabledIcon(Icon) Icon getDisabledIcon() | Selecciona u obtiene la imagen mostrada por la etiqueta cuando está desactivada. Si no se especifica esta imagen, el aspecto y comportamiento crea una manipulando la imagen por defecto.

> Ajuste Fino de la Apariencia de la Etiqueta
> Método | Propósito
> --- | ---
> void setHorizontalAlignment(int) void setVerticalAlignment(int) int getHorizontalAlignment() int getVerticalAlignment() | Selecciona u obtiene donde debería mostrarse el contenido de la etiqueta. El Interface SwingConstants define tres posibles valores para el alineamiento horizontal: LEFT (por defecto para etiquetas de sólo texto), CENTER (por defecto para etiquetas de sólo imagen), o LEFT; y tres para alineamiento vertical: TOP, CENTER (por defecto), y BOTTOM.
> void setHorizontalTextPosition(int) void setVerticalTextPosition(int) int getHorizontalTextPosition() int getVerticalTextPosition() | Selecciona u obtiene dónde debería mostrarse el texto del botón con respecto a su imagen. El interface SwingConstants define tres posibles valores para posición horizontal: LEFT, CENTER, y LEFT (por defecto); y tres para posición vertical: TOP, CENTER (por defecto), y BOTTOM.
> void setIconTextGap(int) int getIconTextGap() | Selecciona u obtiene el número de pixels entre el texto de la etiqueta y su imagen.

#### Ejemplos que utilizan etiquetas

> La siguiente tabla lista algunos de los muchos ejemplos que utilizan etiquetas.

> Ejemplo | Dónde se Describe | Notas
> --- | --- | ---
> LabelDemo.java | Esta página. | Muestra cómo especificar alineamiento vertical y horizontal, así como el alineamiento del texto y la imagen de la etiqueta.
> AlignmentDemo.java | Reparar problemas de Alineamiento | Demuestra un posible problema de alineamiento cuando se utiliza una etiqueta en un box layout vertical y como resolverlo.
> DialogDemo.java | Cómo crear Diálogos | Utiliza etiquetas intercambiables para mostrar instrucciones y proporcionar realimentación.
> SplitPaneDemo.java | Cómo usar SplitPane y Cómo usar Lists. | Mustra una imagen usando una etiqueta dentro de un panel desplazable.
> SliderDemo2.java | Cómo usar Sliders | Utiliza JLabel para proporcionaerle etiquetas a un slider.
> TableDialogEditDemo.java | Cómo usar Tablas | Implementa una subclase de label, ColorRenderer, para mostrar colores en las celdas de una tabla.
> TextFieldDemo.java | Como usar TextField | Tiene cuatro filas, cada una contiene una etiqueta y el campo de texto al que describe.

Ozito