El control JTextField permite al operador del programa ingresar una cadena de caracteres por teclado.
Problema 1:
Confeccionar un programa que permita ingresar el nombre de usuario y cuando se presione un botón mostrar el valor ingresado en la barra de títulos del JFrame.
Programa:
import javax.swing.*; import java.awt.event.*; public class Formulario extends JFrame implements ActionListener{ private JTextField textfield1; private JLabel label1; private JButton boton1; public Formulario() { setLayout(null); label1=new JLabel("Usuario:"); label1.setBounds(10,10,100,30); add(label1); textfield1=new JTextField(); textfield1.setBounds(120,10,150,20); add(textfield1); boton1=new JButton("Aceptar"); boton1.setBounds(10,80,100,30); add(boton1); boton1.addActionListener(this); } public void actionPerformed(ActionEvent e) { if (e.getSource()==boton1) { String cad=textfield1.getText(); setTitle(cad); } } public static void main(String[] ar) { Formulario formulario1=new Formulario(); formulario1.setBounds(0,0,300,150); formulario1.setVisible(true); } }Definimos los tres objetos que colaboran con nuestra aplicación:
public class Formulario extends JFrame implements ActionListener{ private JTextField textfield1; private JLabel label1; private JButton boton1;En el constructor creamos los tres objetos y los ubicamos:
public Formulario() { setLayout(null); label1=new JLabel("Usuario:"); label1.setBounds(10,10,100,30); add(label1); textfield1=new JTextField(); textfield1.setBounds(120,10,150,20); add(textfield1); boton1=new JButton("Aceptar"); boton1.setBounds(10,80,100,30); add(boton1); boton1.addActionListener(this); }En el método actionPerformed se verifica si se presionó el objeto JButton, en caso afirmativo extraemos el contenido del control JTextField mediante el método getText:
public void actionPerformed(ActionEvent e) { if (e.getSource()==boton1) { String cad=textfield1.getText(); setTitle(cad); } }En la variable auxiliar cad almacenamos temporalmente el contenido del JTextField y seguidamente actualizamos el título del control JFrame.
Problema 2:
Confeccionar un programa que permita ingresar dos números en controles de tipo JTextField, luego sumar los dos valores ingresados y mostrar la suma en la barra del título del control JFrame.
Programa:
import javax.swing.*; import java.awt.event.*; public class Formulario extends JFrame implements ActionListener{ private JTextField textfield1,textfield2; private JButton boton1; public Formulario() { setLayout(null); textfield1=new JTextField(); textfield1.setBounds(10,10,100,30); add(textfield1); textfield2=new JTextField(); textfield2.setBounds(10,50,100,30); add(textfield2); boton1=new JButton("Sumar"); boton1.setBounds(10,90,100,30); add(boton1); boton1.addActionListener(this); } public void actionPerformed(ActionEvent e) { if (e.getSource()==boton1) { String cad1=textfield1.getText(); String cad2=textfield2.getText(); int x1=Integer.parseInt(cad1); int x2=Integer.parseInt(cad2); int suma=x1+x2; String total=String.valueOf(suma); setTitle(total); } } public static void main(String[] ar) { Formulario formulario1=new Formulario(); formulario1.setBounds(0,0,140,150); formulario1.setVisible(true); } }Definimos los tres objetos:
public class Formulario extends JFrame implements ActionListener{ private JTextField textfield1,textfield2; private JButton boton1;En el método actionPerformed es donde debemos sumar los valores ingresados en los controles de tipo JTextField. Para extraer el contenido de los controles debemos extraerlos con el método getText:
String cad1=textfield1.getText(); String cad2=textfield2.getText();Como debemos sumar numéricamente los valores ingresados debemos convertir el contenido de las variables cad2 y cad2 a tipo de dato int:
int x1=Integer.parseInt(cad1); int x2=Integer.parseInt(cad2);El método parseInt de la clase Integer retorna el contenido de cad1 convertido a int (provoca un error si ingresamos caracteres en el control JTextField en lugar de números)
Una vez que tenemos los dos valores en formato numérico procedemos a sumarlos y almacenar el resultado en otra variable auxiliar:
int suma=x1+x2;Ahora tenemos que mostrar el valor almacenado en suma en la barra de títulos del control JFrame, pero como el método setTitle requiere un String como parámetro debemos convertirlo a tipo String:
String total=String.valueOf(suma); setTitle(total);Como veremos de acá en adelante es muy común la necesidad de convertir String a enteros y enteros a String:
De String a int:
int x1=Integer.parseInt(cad1);De int a String:
String total=String.valueOf(suma);
Problemas propuestos
- Ingresar el nombre de usuario y clave en controles de tipo JTextField. Si se ingresa las cadena (usuario: juan, clave=abc123) luego mostrar en el título del JFrame el mensaje "Correcto" en caso contrario mostrar el mensaje "Incorrecto".