Tutorial de JTextArea en Java

Como se puede imaginar por el nombre, JTextArea es un componente que crea un área de texto; este componente pertenece al paquete java.lang.Object y tiene algunas propiedades que debemos conocer:

La primera es que su tamaño es el justo para el texto que lleva dentro. Es decir, inicialmente, su tamaño es de una fila de letras de alto y cero pixeles de ancho, ya que no tiene texto. Según vamos escribiendo, va cambiando de tamaño. No es buena idea dejarlo así, ya que nos pueden pasar cosas raras. En el constructor del JTextArea podemos decirle cuántas filas queremos que tenga y cuántas columnas. En el ejemplo vamos a poner 10 filas y 50 columnas, pero también se puede agregar algún texto en nuestros JTextArea, como se verá a continuación:

JTextArea jtx = new JTextArea(); //sin parámetros
JTextArea jtx = new JTextArea(10,50); //número de filas y columnas
JTextArea jtx = new JTextArea( "Texto dentro de JTextArea" ); //cadena de texto


La segunda es que un JTextArea no tiene barras de scroll, así que si escribimos más de la cuenta, simplemente dejaremos de ver lo que escribimos. Para poner barras de scroll tenemos en Java el JScrollPane, un panel que admite dentro un componente. Para ingresar nuestro JTextArea dentro del JScrollPane debemos agregarlo como parámetro, y para que se activen los scroll debemos agregarle un comando específico para ello, este método se llama setViewportView() del JScrollPane y se implementa de la siguiente forma:

JScrollPane scroll = new JScrollPane();
scroll.setViewportView(jtx);
La tercera cosa que debemos saber es que el JTextArea por defecto no hace automáticamente los saltos de líneas. Es decir, si nosotros no hacemos de forma manual los saltos de línea, nuestro texto se escribirá en una línea de varios kilómetros. Para solucionar esto existen dos métodos: el primero corta las líneas de forma automática, pero no respeta las palabras, es decir las corta al momento de llegar al final de la línea sin importar si hay un espacio o no; el segundo método complementa al primero haciendo que las palabras de corten sólo cuando encuentra un espacio cerca. Los métodos son los siguientes:

// Para que haga el salto de línea en cualquier parte de la palabra:
jtx.setLineWrap(true);

// Para que haga el salto de línea buscando espacios entre las palabras
jtx.setWrapStyleWord(true);

Con todo esto, la forma de crear el JTextArea y añadirlo al JFrame será así:

import javax.swing.*;

import java.awt.*;

public class VentanaEjemplo1{

public static void main(String[] args) {

JFrame ventana = new JFrame("Mi Ventana");

ventana.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

JTextArea jtx = new JTextArea(10,50);

jtx.setLineWrap(true);

jtx.setWrapStyleWord(true);

JScrollPane scroll = new JScrollPane(jtx);

ventana.getContentPane().add(scroll, BorderLayout.CENTER);

ventana.add(scroll);

ventana.pack();//método utilizado para que se muestren los //elementos de la ventana

ventana.setVisible(true);

}

}


Lo cuarto es que nuestros JTextArea pueden ser editados por el usuario o puede ser de sólo lectura, dependiendo de la propiedad setEditable(), el valor booleano false sólo da permiso de lectura:


texto.setEditable(false);


La quinta cosa importante que debemos mencionar es que podemos modificar es que podemos modificar muchas cosas a nuestro JTextArea, entre ellas están el tamaño, el tipo y la fuente de la letra como también podemos modificar el color de la letra y del fondo; la forma más simple de modificar las letras es crear un tipo de letra y luego entregarla como parámetro:

Font font = new Font("Verdana", Font.ITALIC, 12);

jtx.setFont(font);


Cuando creamos el tipo de fuente primero debemos entregar el nombre de la fuente, luego el formato en que la queremos:

Normal=PLAIN

Cursiva=ITALIC

Negrita=BOLD


Y finalmente el tamaño de la letra. Para cambiar el color de la letra debemos utilizar el método:

jtx.setForeground(Color.white);


Para cambiar el color de fondo de nuestro JTextArea debemos utilizar el método:

jtx.setBackground(Color.black);


En ambos casos disponemos de varios colores ya designados:


1. BLACK

2. BLUE

3. CYAN

4. DARK_GRAY

5. GRAY

6. GREEN

7. LIGHT_GRAY

8. MAGENTA

9. ORANGE

10. PINK

11. RED

12. WHITE

13. YELLOW


Si no te gusta alguno de estos colores, puedes crear el tuyo utilizando la escala de colores RGB (utilizando valores entre 0 y 255), para implementarlo en cualquiera de los dos casos anteriores se realiza de la siguiente forma:

jtx.setForeground(new Color(int R,int G,int B));

jtx.setBackground(new Color(int R,int G,int B));


Finalmente veamos un ejemplo donde se muestran la mayoría de los componentes:


import java.awt.*;

import javax.swing.JFrame;

import javax.swing.JScrollPane;

import javax.swing.JTextArea;


public class JTextAreaTest{


public static void main (String [] args) {


//Método para cambiar la decoración de la ventana en sí,

//si ponemos el valor en falso la ventana se verá de la forma predeterminada de Windows

JFrame.setDefaultLookAndFeelDecorated(true);


//creamos el JFrame principal donde agregaremos el resto de objetos

JFrame frame = new JFrame ("JTextArea Test");

frame.setLayout (new FlowLayout ());

frame.setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE);


String text = "Un objeto JTextArea es una área multilínea para escribir texto. "

+ "Se puede cambiar el número de líneas que se mostrarán, "

+ "y también el numero de columnas. Puedes cambiar las fuentes y tamaños de letras. "

+ "Y puedes agregar tu TextArea en un JScrollPane para poder mover las zonas de texto." ;


//creamos un area de texto normal no redimensionable

JTextArea textAreal = new JTextArea(text,20,10);

textAreal.setPreferredSize(new Dimension (10,100));


//creamos otra área de texto con un JScrollPane, sólo es agregado

JTextArea textArea2 = new JTextArea(text,20,10);

JScrollPane scroll = new JScrollPane(textArea2);

frame.getContentPane().add(scroll, BorderLayout.CENTER);

frame.add(scroll);


//El método setLineWrap lo que hace es ordenar las palabras para que no se salgan de los márgenes,

//si lo desactivamos(false), el texto se escribirá hacia el lado(en una línea) y no se vería todo si el //texto es muy largo

textAreal.setLineWrap (true);

textArea2.setLineWrap (true);

textAreal.setWrapStyleWord(true);

textArea2.setWrapStyleWord(true);


//agregamos los area de texto al frame principal,

//nota: el textArea2 está dentro de un JScrollPane, por eso éste es el que agregamos al frame

frame.add(textAreal);

frame.add(scroll);


//el metodo pack sirve para dejar todo dentro del frame

frame.pack();


//y finalmente el metodo setVisible es para que se visualice la ventana

frame.setVisible(true) ;

}

}



Ejercicios:


-Crear una ventana simple que al ingresar texto lo organice de forma automática, realizando los saltos de líneas en cualquier parte de una frase, con fondo y tipo de letra a su elección.


-Crear una ventana con tres JTextArea: el primero que no realice saltos de líneas, con letra simple, el segundo debe tener Scrollbar, realizar los saltos de líneas en cualquier parte de la frase a escribir, con fondo amarillo y letra cursiva color negro, por ultimo el tercer cuadro debe tener Scrollbar con saltos de líneas buscando espacios, fondo color negro y letras blancas “en negrita”.

15 comentarios:

Roni dijo...

Muy buen tutorial amigo, solo tengo una consulta.... Como podria hacer para que automaticamente me cambie de color ciertas palabra

Conectate con tu planeta dijo...

Excelelnte material sirve mucho de ayuda muchas gracias

Anónimo dijo...

Hola, buen aporte. Te hago una consulta, quiero que un jtextarea se agrande o ajuste su tamaño, dependiendo del como se agrande la ventana en tiempo de ejecucion. Espero me puedas ayudar. Desde ya muchas gracias. Saludos

Unknown dijo...

excelenete!!

Laura Joselin Martínez Pérez dijo...

Alguien sabe si hago una consulta a mysql como mostrar el resultado en un jtextarea pero todo tal como se muestra en la consola de mysql?

bamartinezd dijo...

Graciaaassssss me ha servido descomunalmente!!!! (Y)

Unknown dijo...
Este comentario ha sido eliminado por el autor.
Unknown dijo...

buenas necesito ayuda.!
estoy creando un compilador y necesito que en mi JtextArea se muestre el numero de linea por el que voy o en la que me encuentro. como un compilador normal para asi hacerle ver al usuario en que linea se encuentra el error
de ante mano muchas gracias.!

Anónimo dijo...

Buenas necesito ayuda!! me pidieron crear un panel o ventana donde tengo que crear un rectángulo y que dicho rectángulo cambie de color cada 5 segundos!! gracias de ante mano

Foros dijo...

alguien puede ayudar. sobre como pasar los datos que hay en un jtextarea a un arreglo

Foros dijo...

alguien puede ayudar. sobre como pasar los datos que hay en un jtextarea a un arreglo

bazar Kasuma dijo...

gracias

bazar Kasuma dijo...

gracias

Unknown dijo...

se puede poner um boton de modificar en JtextArea

miguel angel dijo...

AMIGo ayuda , no me funcion el metodo que cree:
public void setTxta() {

txta.setText("como va la cosa");// it does not work.

lo invoco de otra clase y si resulta pero no me modifica el texto del jtextarea

Publicar un comentario