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

Como en el �rea de texto se muestra un gran bloque de texto, se necesita alg�n formateo. Los strings largos necesitan partirse en partes m�s peque�as que puedan unirse en una, y los parr�fos requieren nuevas l�neas entre ellos. Adem�s, podr�amos querer que el texto apareciera en una fuente o estilo espec�fico. Para estos tipos de formateos, el lenguaje Java usa:

  • Concatenaci�n de Strings
  • Secuencias de Caracteres
  • M�todos Predefinidos

.�Concatenaci�n de Strings

La uni�n de uno o m�s objetos String se llama una concatenaci�n strings. Para unir los strings para formar un objeto String, usamos el operador +. Los strings siempre van encerrados entre comillas " ". La primera comilla le dice al compilador que ha alcanzado el principio de un objeto String, y la siguiente comilla le dice que ha alcanzado el final de ese String.

El operador + le dice al compilador que almacene el siguiente objeto con el primer objeto y asigna el objeto concatenado a la variable del lado izquierdo del operador de asignaci�n =:

firstString = "Java Programming";
secondString =  " is a lot of fun";
combineString = firstString + secondString;

Resulta en Java Programming is a lot of fun asignado a combineString. Obtenemos el mismo resultado con lo siguiente:

singleString =  
    "Java Programming" + " is a lot of fun.";

y tambi�n con:

singleString = "Java Programming" +
     " is a lot of fun.";

Observa que cada pareja de comillas est� en una s�la l�nea. No importa si el operador de concatenaci�n est� en la primera o en la segunda l�nea, o si las parejas de comillas est�n en un a l�nea juntas. Si la pareja de comillas se rompe y la primera est� en una l�nea y la segunda comilla en la siguiente, obtendremos un error de compilaci�n como este:

unclosed string literal
println("Java Programming is

.�Secuencias de Caracteres

La concatenaci�n de strings resuelve el problema de los strings largos que necesitamos romper, pero no crea espacios entre p�rrafos. Para crear una nueva l�nea en el texto necesitamos usar una secuencia de escape.

El caracter de barra invertida (\) es un caracter de escape que indica al compilador que queremos un caracter especial. Podemos escapar caracteres que queremos mostrar, como las comillas o < >. Adem�s, la barra invertida, en combinaci�n con ciertos caracteres, resulta en la inserci�n de un tabulador, un retorno de carro o una nueva l�nea.

Para crear un espacio de p�rrafo, usamos \n para insertar un caracter de nueva l�nea. Ahora podemos llenar el objeto JTextArea con el texto que queremos mostrar:

longString = new JTextArea("This shows you how to display" +
   " long strings by concatenating them." +
   " Enclose each string in quotes and" +
   " concatenate each line with the + operator.");

Cambia el texto para que corresponda con las necesidades de tu aplicaci�n o usa el texto proporcionado.

Sigue estos pasos...
  1. Abre el fichero Welcome.java en tu editor de texto.
  2. A�ade lo siguiente para crear el �rea de texto con el texto y asignarlo a la variable ta:
    ta = new JTextArea("This application uses a" +
       " typical Graphical User Interface (GUI)," +
       " featuring AWT layout managers and Project" +
       " Swing components, such as buttons, borders," +
       " text areas, menus, and more." +
       " \n\nIn addition, the dive log's functionality" +
       " uses AWT event handlers, methods to manipulate" +
       " data, Java I/O to save user input to files," +
       " and special classes to include HTML pages with" +
       " live links.");
    
  3. Graba el fichero.

Observa que cada l�nea tiene un string encerrado entre comillas, seguido por el operador de concatenaci�n para unir los strings. La secuencia de escape \n crea una nueva l�nea, y \n\n crea dos nuevas l�neas para dar espacio extra entre p�rrafos.

.�M�todos

La clase JTextArea tiene m�todos para manejar varios problemas de formateo:

  • setFont(Font f)
    Selecciona la fuente, el estilo o el tam�o de la fuente actual.
  • setLineWrap(boolean wrap)
    Si se selecciona a true, las l�neas se parten si son demasiado largas para entrar en la anchura adecuada. Si se selecciona a false, las l�neas no son partidas.
  • setWrapStyleWord(boolean word)
    Si se selecciona a true las l�neas se partir�n en un l�mite de palabra como un espacio en blanco. Si selecciona a false, las l�neas se partir�n en caracteres.

Hay muchos m�s m�todos en la clase JTextArea, pero los mostrados arriba son usados en la clase Welcome. Adem�s, JTextArea hereda m�todos de la clase JTextComponent. Un m�todo espec�ficamente usado en la clase Welcome:

  • setEditable(boolean b)
    Hace el componente de texto editable o no.

La clase JTextComponent tambi�n tiene muchos m�todos disponibles para usar el JTextArea como una caja de entrada para los usuarios. Estas caracter�sticas se mostrar�n en otras clases de la aplicaci�n Dive Log. Adem�s, JTextArea tiene otro constructor, que nos permite especificar un tama�o espec�fico, y que tambi�n veremos m�s adelante en este tutorial.

En el siguiente ejercicio de programaci�n, especificamos una fuente, un estilo y un tama�o para el �rea de texto, seleccionamos la ruptura de l�neas a true, y el estilo de ruptura a los l�mites de palabra, impidiendo que los usuarios lo editen poniendo setEditable a false.

Sigue estos pasos...
  1. Abre el fichero Welcome.java en tu editor de texto.
  2. A�ade los siguientes m�todos inmediantamente despu�s de la inicializaci�n del �rea de texto:
     ta.setFont(new Font("SansSerif", Font.PLAIN, 14));
     ta.setLineWrap(true);
     ta.setWrapStyleWord(true);
     ta.setEditable(false);
    
  3. Graba el fichero.

El m�todo setFont es llamado sobre el objeto ta usando el operador punto. Proporcionamos los argumentos del m�todo inicializando la clase Font con la palabra clave new.

El constructor de la clase Font necesita los siguientes argumentos:

  • Un nombre de fuente como un String
  • El el campo Style de la clase font con el operador punto.
  • El tama�o en puntos.

Los tres m�todos setLineWrap, setWrapStyleWord, setEditable requieren una palabra clave booleana, lo que significa que se seleccionan a true o false. Seleccionar setLineWrap y setWrapStyleWord a true fuerza al objeto ta a partir la l�neas por el tama�o del �rea de ventana, y hace que las rupturas sean en los espacios en blanco entre palabras. El argumento false para el m�todo setEditable hace el �rea de texto de s�lo lectura y no permite ninguna caracter�stica de edici�n.

.�Decorar con bordes

Los bordes decorativos son est�ticametne bonitos y permiten a los desarrolladores a�adir un t�pico a una secci�n, un objeto t�tulo. Adem�s ayudan al usuario a definir �reas especificas de la pantalla, o seccionar la pantalla en �reas l�gicas.

Podemos crear distintos tipos de bordes con m�todos de la clase BorderFactory. Primero, llamamos al m�todo setBorder de la clase JComponent.

Sigue estos pasos...
  1. Abre el fichero Welcome.java en tu editor de texto.
  2. Llama a setBorder sobre el objeto en el que queremos tener un borde.
  3. Llama a la clase BorderFactory y el m�todo createTitledBorder con el operador punto:
    ta.setBorder(BorderFactory.createTitledBorder
    
  4. Proporciona el String que quieras que aparezca como t�tulo en el m�todo createTitleBorder:
    ("This is a Title"));
    
    La llamada a m�todo se deber�a parecer a esta:
    ta.setBorder(BorderFactory.createTitledBorder(
      " Welcome to the Java Technology Dive Log "));
    
  5. Graba el fichero.

El nombre de la variable ta identifica el objeto que necesita un borde. El setBorder(Border border) toma a la clase BorderFactory como un argumento, llamando a su m�todo createTitledBorder con el operador punto, y proporciona el String a mostrar con el borde.

Pueba otros bordes, chequeando para ver los arguemntos que requieren en la documentaci�n de la clase BorderFactory

Para a�adir la �ltima imagen al panel Welcome:

Sigue estos pasos...
  1. Abre el fichero Welcome.java en tu editor de texto.
  2. Inicializa un JLabel con new.
  3. Incluye un String vacio (no aparecer� texto con esta imagen).
  4. Inicializa un ejemplar de la clase ImageIcon.
  5. En la inicialiaci�n de la clase ImageIcon, incluye:
    • Un String para el nombre y el path de la imagen.
    • Un campo JLabel para la posici�n dise�ada.
    • A�ade el siguiente c�digo a tu fichero, justo despu�s de los m�todos llamados sobre ta:
      diver = new JLabel("", 
         new ImageIcon("images/diver.jpg"), 
          JLabel.CENTER);
      
  6. Graba el fichero.
Nota:
Puedes escribir el �ltimo paso en una s�la l�nea. Aqu� lo hemos dividido por problemas de impresi�n, pero aun as� compila perfectamente si lo copias y lo pegas en tu clase por que las parejas de comillas no se han dividido.

Hasta ahora hemos:

  • Declarado tres variables.
  • Inicializado y asignado los objetos a cada una de esas variables en el constructor.
  • Enviado llamadas a m�todos sobre esos objetos para manipularlos usando el operador punto.

El �ltimo paso para completar este panel es a�adir los objetos cada uno a una regi�n de la distribuci�n. Esto nos lleva de vuelta al controlador de distribuci�n BorderLayout.

Las constantes son f�ciles de identificar en el c�digo porque est�n escritas
   A   En letras may�sculas como PI
   B  Con la inicial en may�suclas como LoanAmount
   C  Con la primera palara en min�scula y la segunda en may�scula como redBackground

COMPARTE ESTE ARTÍCULO

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