- Swing - JTextArea |
El control de tipo JTextArea permite ingresar múltiples líneas, a diferencia del control de tipo JTextField.
Confeccionar un programa que permita ingresar un mail en un control de tipo JTextField y el cuerpo del mail en un control de tipo JTextArea.
import javax.swing.*; public class Formulario extends JFrame{ private JTextField textfield1; private JTextArea textarea1; public Formulario() { setLayout(null); textfield1=new JTextField(); textfield1.setBounds(10,10,200,30); add(textfield1); textarea1=new JTextArea(); textarea1.setBounds(10,50,400,300); add(textarea1); } public static void main(String[] ar) { Formulario formulario1=new Formulario(); formulario1.setBounds(0,0,540,400); formulario1.setVisible(true); } }
Como vemos crear un control de tipo JTextArea es similar a la creación de controles de tipo JTextField:
textarea1=new JTextArea(); textarea1.setBounds(10,50,400,300); add(textarea1);
El inconveniente que tiene este control es que si ingresamos más texto que el que puede visualizar no aparecen las barras de scroll y no podemos ver los caracteres tipeados.
Para salvar el problema anterior debemos crear un objeto de la clase JScrollPane y añadir en su interior el objeto de la clase JTextArea, luego el programa definitivo es el siguiente:
import javax.swing.*; public class Formulario extends JFrame{ private JTextField textfield1; private JScrollPane scrollpane1; private JTextArea textarea1; public Formulario() { setLayout(null); textfield1=new JTextField(); textfield1.setBounds(10,10,200,30); add(textfield1); textarea1=new JTextArea(); scrollpane1=new JScrollPane(textarea1); scrollpane1.setBounds(10,50,400,300); add(scrollpane1); } public static void main(String[] ar) { Formulario formulario1=new Formulario(); formulario1.setBounds(0,0,540,400); formulario1.setVisible(true); } }
Declaramos los dos objetos:
private JScrollPane scrollpane1; private JTextArea textarea1;
Primero creamos el objeto de la clase JTextArea:
textarea1=new JTextArea();
Seguidamente creamos el objeto de la clase JScrollPane y le pasamos como parámetro el objeto de la clase JTextArea:
scrollpane1=new JScrollPane(textarea1);
Definimos la posición y tamaño del control de tipo JScrollPane (y no del control JTextArea):
scrollpane1.setBounds(10,50,400,300);
Finalmente añadimos el control de tipo JScrollPane al JFrame:
add(scrollpane1);
Confeccionar un programa que permita ingresar en un control de tipo JTextArea una carta. Luego al presionar un botón mostrar un mensaje si la carta contiene el String "argentina".
import javax.swing.*; import java.awt.event.*; public class Formulario extends JFrame implements ActionListener{ private JScrollPane scrollpane1; private JTextArea textarea1; private JButton boton1; public Formulario() { setLayout(null); textarea1=new JTextArea(); scrollpane1=new JScrollPane(textarea1); scrollpane1.setBounds(10,10,300,200); add(scrollpane1); boton1=new JButton("Verificar"); boton1.setBounds(10,260,100,30); add(boton1); boton1.addActionListener(this); } public void actionPerformed(ActionEvent e) { if (e.getSource()==boton1) { String texto=textarea1.getText(); if (texto.indexOf("argentina")!=-1) { setTitle("Si contiene el texto \"argentina\""); } else { setTitle("No contiene el texto \"argentina\""); } } } public static void main(String[] ar) { Formulario formulario1=new Formulario(); formulario1.setBounds(0,0,400,380); formulario1.setVisible(true); } }
Cuando se presiona el botón se ejecuta el método actionPerformed y procedemos a extraer el contenido del control TextArea a través del método getText:
String texto=textarea1.getText();
Luego mediante el método indexOf de la clase String verificamos si el String "argentina" está contenido en la variable texto:
if (texto.indexOf("argentina")!=-1) { setTitle("Si contiene el texto \"argentina\""); } else { setTitle("No contiene el texto \"argentina\""); }
Si queremos introducir una comilla doble dentro de un String de Java debemos antecederle la barra invertida (luego dicho caracter no se lo considera parte del String):
setTitle("Si contiene el texto \"argentina\"");
import javax.swing.*; import java.awt.event.*; public class Formulario extends JFrame implements ActionListener{ private JScrollPane scrollpane1,scrollpane2; private JTextArea textarea1,textarea2; private JButton boton1; public Formulario() { setLayout(null); textarea1=new JTextArea(); scrollpane1=new JScrollPane(textarea1); scrollpane1.setBounds(10,10,200,140); add(scrollpane1); textarea2=new JTextArea(); scrollpane2=new JScrollPane(textarea2); scrollpane2.setBounds(220,10,200,140); add(scrollpane2); boton1=new JButton("Verificar contenidos"); boton1.setBounds(10,170,150,30); add(boton1); boton1.addActionListener(this); } public void actionPerformed(ActionEvent e) { if (e.getSource()==boton1) { String texto1=textarea1.getText(); String texto2=textarea2.getText(); if (texto1.equals(texto2)==true) { setTitle("Los dos controles tiene el mismo texto."); } else { setTitle("Los dos controles no tiene el mismo texto."); } } } public static void main(String[] ar) { Formulario formulario1=new Formulario(); formulario1.setBounds(0,0,500,350); formulario1.setVisible(true); } }