New 2 Java: Construir una Aplicación: 2.- Herencia, Paneles y Distribución

�Qu� clase deber�amos inicializar para los objetos image, text, y text area?

Para mostrar texto e im�genes, se usan las clases JLabel e ImageIcon. Una etiqueta es un cadena de texto corta, con o sin una imagen asociada. Las etiquetas normalmente se usan para mostrar t�tulos o para etiquetar otros objetos de la aplicaci�n, como campos o �reas de texto. Podemos usar las clases JLabel y IconImage para mostrar el t�tulo y la bandera de buceo sobre el panel Welcome. La clase JTextArea se usa para �reas de texto.

.�Etiquetas e Im�genes

Un objeto JLabel es uno de los componentes m�s simples en la librer�a Swing. Usamos JLabel para mostrar texto o im�genes de las misma forma que las etiquetas del mundo real. La propia etiqueta contiene el texto y la imagen como la etiqueta de una lata de tomate.

Aqu� est� c�mo mostrar una etiqueta de texto en una aplicacion:

  1. Inicializar un objeto de la clase JLabel con la palabra clave new.
  2. Asignarlo a un nombre de variable que sea corto pero descriptivo.
  3. Suministrar el texto deseado en el constructor de JLabel.
  4. A�adir la etiqueta al panel.

La ilustraci�n de arriba muestra c�mo se construyen juntas las distintas partes de una etiqueta. La etiqueta se construye con un String para mostrarlo a�adi�ndolo al constructor de JLabel, y la etiqueta es a�adida a un JPanel. Esta etiqueta tambi�n tiene un fondo azul y un color de primer plano blanco.

En el c�digo de abajo, se crea un JLabel simple:

JLabel text = new JLabel("This is text on a JLabel.");

Hasta ahora un objeto etiqueta con texto se creaba identificando el objeto como del tipo JLabel, asignandolo a la variable text, usando la palabra clave new, y proporcionando el texto que aparece en la etiqueta como un objeto String .

Sin embargo, para mostrarla realmente en la aplicaci�n, la etiqueta debe a�adirse al panel.

Recuerda que la clase Welcome es del tipo JPanel porque extiende la clase JPanel. Esta subclase Welcome hereda m�todos de la clase Container, incluyendo uno llamado add. Para a�adir la etiqueta la panel, llamamos al m�todo por su nombre, add, y proporcionamos al m�todo el objeto que queremos a�adir, en este caso text:

add(text);

Esas dos l�neas muestran el texto This is text on a JLabel.. Podemos cambiar la forma en la que aparece el texto usando diferentes constructores de JLabel, o referenciando el nombre de variable con un m�todo, como para aplicar un tipo de fuente espec�fico, o hacer que la etiqueta sea de un color espec�fico.

Como hemos visto, los m�todos de la clase Component son heredados y est�n disponibles para que los usemos con nuestras variables con el operador punto y llamando al m�todo:

text.setForeground(Color.red);

La clase JLabel tambi�n tiene m�todos que nos permiten manipular el objeto etiqueta. El m�todo setHorizontalAlignment posiciona el objeto etiqueta:

text.setHorizontalAlignment(SwingConstants.RIGHT);

Aqu�, como antes, usamos el nombre el objeto que queremos manipular, y luego la llamada al m�todo usando el operador punto y el nombre del m�todo. Pasamos en la clase SwingConstants, el operador punto, y la posici�n en la que queremos situar el objeto.

Adem�s, podemos crear objetos JLabel con constructores que construyen algunos de estos detalles, como la posici�n, dentro de la creaci�n de la etiqueta:

JLabel text = new JLabel(
   "This text will be centered.", JLabel.CENTER); 

Una aplicaci�n llamada Label.java demuestra los conceptos cubiertos hasta ahora, y el resultado es el siguiente:

Nota:
Como s�lo hemos a�adido un componente a esta aplicaci�n el controlador de distribuci�n por defecto (FlowLayout) es suficiente.

La clase JLabel tambi�n ofrece un constructor que muestra un icono de imagen con el texto, que se describe en la siguiente secci�n.

.�Mostrar Im�genes con ImageIcon y JLabel

Para mostrar im�genes, creamos un objeto con la clase ImageIcon y le proporcionamos al constructor un fichero de imagen en un formato soportado por la clase ImageIcon, como .gif o .jpg. La imagen puede ser pasada al constructor como:

  • un String con el nombre del fichero.
  • un objeto URL especificando la localizaci�n de la imagen.
  • un objeto Image
  • un array de bytes con los datos de la imagen.

El objeto ImageIcon puede cargarse dentro de un JLabel, JButton, JMenuItem, u otro componente similar.

Todo esto se puede hacer en un s�lo paso debido a un constructor manejable de JLabel:

JLabel(String text, Icon icon, 
    int horizontalAlignment)

Donde pone Icon icon, insertamos el constructor de ImageIcon que queremos usar. Por ejemplo:

// assigns the variable imageLabel 
// as a JLabeltype
JLabel imageLabel =
// Initializes a JLabel object with 
// a String object, 
// Label with an Image.
new JLabel("Java Technology Dive Log", 
// Initializes an ImageIcon object, 
// specifically a diveflag.gif in a 
// directory called images.
     new ImageIcon("images/diveflag.gif"), 
// Centers the JLabel object.
   JLabel.CENTER);

El c�digo de arriba crea un objeto JLabel que act�a como un contenedor para el obejto ImageIcon y el texto, como se ilustra abajo:


Ahora que la etiqueta y la imagen se han inicializado y asignado a jl, podemos llamar a otros m�todos sobre ese objeto para cambiar alguna de las caracter�sticas por defecto, como la fuente utilizada en el texto.

La clase JComponent tiene un m�todo setFont para este prop�sito. El m�todo requiere un objeto Font como argumento, lo que significa que debemos inicializar la clase Font con la palabra clave new. La inicializaci�n de la clase Font requiere tres argumentos:

  • Una representaci�n String de la fuente, como "Courier"
  • El estilo de la fuente, como Font.BOLD.
  • Un int para el tama�o en puntos de la fuente, como 14.

Para cambiar la fuente por defecto mostrada en JLabel, usamos:

jl.setFont(new Font("Times-Roman", Font.BOLD, 17));

Este c�digo selecciona la fuente del objeto jl a Times Roman, en bold, a 17 puntos.

Sigue estos pasos...
  1. Abre el fichero Welcome.java en tu editor de texto.
  2. En la l�nea posterior a la llamada al m�todo setLayout, inicializa los objetos JLabel y ImageIcon:
    jl = new JLabel("Java(TM) Technology Dive Log",    
        new ImageIcon("images/diveflag.gif"), 
        JLabel.CENTER);
    jl.setFont(new Font("Times-Roman",
         Font.BOLD, 17));
    
  3. Graba el fichero.

.��reas de Texto con JTextArea

JLabel es usada para mostrar peque�as cadenas de texto. Para mostrar grandes bloques de texto, inicializamos un objeto de la clase JTextArea. Ya hemos configurado una variable para un �rea de texto llamada ta al principio de la clase. Luego crearemos el �rea de texto asign�ndole la variable que hemos creado.

En la clase Welcome, usamos el siguiente constructor de JTextArea:

JTextArea(String text)

Nuestro c�digo se paracer� a algo como esto:

ta = new JTextArea("This application uses a
     typical Graphical User Interface (GUI), 
     featuring AWT layout managers and Project 
     Swing components . . ."); 

Pero hay un problema con este c�digo. Si compilamos este constructor seg�n est� escrito, obtendremos un error.

�Por qu� no se compilar� el c�digo del ejemplo?
   A   El String no puede contener par�ntesis
   B  El String contiene retornos de carro duros
   C  Ninguno

COMPARTE ESTE ARTÍCULO

COMPARTIR EN FACEBOOK
COMPARTIR EN TWITTER
COMPARTIR EN LINKEDIN
COMPARTIR EN WHATSAPP
ARTÍCULO ANTERIOR