En los anteriores ejemplos he usado el JOptionPane en Java para ingresar y mostrar datos, pero hay objetos de la swing de Java que satisfacen estas necesidades, entre estos encontramos principalmente los JLabel (Etiquetas) y JTextField (Campos de texto). Con los primeros mostramos datos, y con los campos de texto obtenemos los datos, aunque también podemos mostrar los datos por medio de este objeto, todo esto en un simple Formulario Básico en Java.
Al igual que cuando creamos las Ventanas en Java y los Botones, este tipo de objetos también se puede personalizar, pero a continuación se mostrara como se crean inicialmente estos objetos.
USAR JLABEL Y JTEXTFIELD EN JAVA
En las lineas esta comentareado el uso de cada una, alli encontraran donde se crean, se añaden y se usan específicamente cada una, no sobra recordar que es importante añadir las librerías que están desde la linea 2 hasta la 10 para que funcione el siguiente ejemplo:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 | //librerias necesarias import java.awt.Dimension; import java.awt.FlowLayout; import java.awt.Insets; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JTextField; public class GuiJava implements ActionListener{//implementando el listener de eventos JButton bt1;//creando variables globales de los botones JLabel jl1, jl2, jl3;//creando variables globales para las etiquetas JTextField jt1, jt2, jt3;//creando variables globales para los campos de texto JFrame jf = new JFrame("Formulario Basico Java");//creacion de ventana con el titulo public GuiJava(){//constructor de la clase jf.setLayout(new FlowLayout());//Configurar como se dispondra el espacio del jframe Dimension d = new Dimension();//objeto para obtener el ancho de la pantalla //Instanciando etiquetas jl1 = new JLabel("Numero 1"); jl2 = new JLabel("Numero 2"); jl3 = new JLabel("="); //Instanciando cuadros de texto jt1 = new JTextField(2); jt2 = new JTextField(2); jt3 = new JTextField(2); //Instanciando boton con texto bt1 = new JButton("+"); //añadiendo objetos a la ventana jf.add(jl1); jf.add(jt1); jf.add(bt1); jf.add(jl2); jf.add(jt2); jf.add(jl3); jf.add(jt3); //margenes para texto en boton bt1.setMargin(new Insets(1, 5, 1, 5)); //añadiendo el listener a los botones para manipular los eventos del click bt1.addActionListener(this); jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//finaliza el programa cuando se da click en la X jf.setResizable(false);//para configurar si se redimensiona la ventana jf.setLocation((int) ((d.getWidth()/2)+290), 50);//para ubicar inicialmente donde se muestra la ventana (x, y) jf.setSize(400, 250);//configurando tamaño de la ventana (ancho, alto) jf.setVisible(true);//configurando visualización de la venta } public static void main(String[] args) { GuiJava gj = new GuiJava();//uso de constructor para la ventana } @Override public void actionPerformed(ActionEvent e) {//sobreescribimos el metodo del listener int n1, n2, nr;//variables que almacenaran los numeros de los campos de texto if(e.getSource()==bt1){//podemos comparar por el contenido del boton //Los campos de texto son de tipo string, asi que tomamos la cadena con el metodo .getText() //y lo almacenamos en la variable. n1 = Integer.parseInt(jt1.getText()); n2 = Integer.parseInt(jt2.getText()); nr = n1 + n2; //realizamos la operacion jt3.setText(""+nr);/*mostramos el valor mediante el metodo .setText() como muestra cadenas anteponemos una cadena vacia y concatenamos el resultado*/ } } } |
//librerias necesarias import java.awt.Dimension; import java.awt.FlowLayout; import java.awt.Insets; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JTextField; public class GuiJava implements ActionListener{//implementando el listener de eventos JButton bt1;//creando variables globales de los botones JLabel jl1, jl2, jl3;//creando variables globales para las etiquetas JTextField jt1, jt2, jt3;//creando variables globales para los campos de texto JFrame jf = new JFrame("Formulario Basico Java");//creacion de ventana con el titulo public GuiJava(){//constructor de la clase jf.setLayout(new FlowLayout());//Configurar como se dispondra el espacio del jframe Dimension d = new Dimension();//objeto para obtener el ancho de la pantalla //Instanciando etiquetas jl1 = new JLabel("Numero 1"); jl2 = new JLabel("Numero 2"); jl3 = new JLabel("="); //Instanciando cuadros de texto jt1 = new JTextField(2); jt2 = new JTextField(2); jt3 = new JTextField(2); //Instanciando boton con texto bt1 = new JButton("+"); //añadiendo objetos a la ventana jf.add(jl1); jf.add(jt1); jf.add(bt1); jf.add(jl2); jf.add(jt2); jf.add(jl3); jf.add(jt3); //margenes para texto en boton bt1.setMargin(new Insets(1, 5, 1, 5)); //añadiendo el listener a los botones para manipular los eventos del click bt1.addActionListener(this); jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//finaliza el programa cuando se da click en la X jf.setResizable(false);//para configurar si se redimensiona la ventana jf.setLocation((int) ((d.getWidth()/2)+290), 50);//para ubicar inicialmente donde se muestra la ventana (x, y) jf.setSize(400, 250);//configurando tamaño de la ventana (ancho, alto) jf.setVisible(true);//configurando visualización de la venta } public static void main(String[] args) { GuiJava gj = new GuiJava();//uso de constructor para la ventana } @Override public void actionPerformed(ActionEvent e) {//sobreescribimos el metodo del listener int n1, n2, nr;//variables que almacenaran los numeros de los campos de texto if(e.getSource()==bt1){//podemos comparar por el contenido del boton //Los campos de texto son de tipo string, asi que tomamos la cadena con el metodo .getText() //y lo almacenamos en la variable. n1 = Integer.parseInt(jt1.getText()); n2 = Integer.parseInt(jt2.getText()); nr = n1 + n2; //realizamos la operacion jt3.setText(""+nr);/*mostramos el valor mediante el metodo .setText() como muestra cadenas anteponemos una cadena vacia y concatenamos el resultado*/ } } }
El ejemplo anterior realiza una suma, cabe aclarar que no se han validado los campos, esto lo explicare con detalle mas adelante, como lo dice el titulo es un formulario básico 😉 Una vez ejecutado veremos lo siguiente:
Como vemos es algo realmente básico, podremos configurar algunas cosas y lo mejoraremos bastante para el usuario, así que con el siguiente código se podrán apreciar las modificaciones necesarias para lo anterior.
PERSONALIZANDO FORMULARIO
Como vemos la disposición inicial del JFrame con los objetos es cuando se agreguen así mismo se ubican, pero que si queremos controlar la posición y el tamaño?, también vemos que en la anterior imagen al momento de escribir nos aparece al lado izquierdo, pero si queremos cambiar la orientación de escritura?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 | //librerias necesarias import java.awt.Color; import java.awt.Dimension; import java.awt.Insets; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.BorderFactory; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JTextField; public class GuiJava implements ActionListener{//implementando el listener de eventos JButton bt1;//creando variables globales de los botones JLabel jl1, jl2, jl3;//creando variables globales para las etiquetas JTextField jt1, jt2, jt3;//creando variables globales para los campos de texto JFrame jf = new JFrame("Formulario Basico Java");//creacion de ventana con el titulo public GuiJava(){//constructor de la clase jf.setLayout(null);//Configurar como se dispondra el espacio del jframe Dimension d = new Dimension();//objeto para obtener el ancho de la pantalla //Instanciando etiquetas jl1 = new JLabel("Numero 1"); jl2 = new JLabel("Numero 2"); jl3 = new JLabel("="); //Instanciando cuadros de texto jt1 = new JTextField(2); jt2 = new JTextField(2); jt3 = new JTextField(2); //Instanciando boton con texto bt1 = new JButton("+"); //Ubicando los objetos a nuestro gusto jl1.setBounds(30, 40, 60, 25); jt1.setBounds(100, 40, 40, 25); bt1.setBounds(185, 40, 25, 25); jl2.setBounds(235, 40, 60, 25); jt2.setBounds(295, 40, 40, 25); jl3.setBounds(30, 85, 60, 25); jt3.setBounds(100, 85, 40, 25); //Cambiando horientacion texto jt1.setHorizontalAlignment(JTextField.RIGHT); jt2.setHorizontalAlignment(JTextField.RIGHT); jt3.setHorizontalAlignment(JTextField.RIGHT); //Cambiando color, tamaño del borde, como tambien redondeandolo jt1.setBorder(BorderFactory.createLineBorder(Color.red, 2, true)); jt2.setBorder(BorderFactory.createLineBorder(Color.red, 2, true)); jt3.setBorder(BorderFactory.createLineBorder(Color.red, 2, true)); //ocultando el jlabel y el jtextfield del resultado jl3.setVisible(false); jt3.setVisible(false); //añadiendo objetos a la ventana jf.add(jl1); jf.add(jt1); jf.add(bt1); jf.add(jl2); jf.add(jt2); jf.add(jl3); jf.add(jt3); //margenes para texto en boton bt1.setMargin(new Insets(1, 5, 1, 5)); //añadiendo el listener a los botones para manipular los eventos del click bt1.addActionListener(this); jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//finaliza el programa cuando se da click en la X jf.setResizable(false);//para configurar si se redimensiona la ventana jf.setLocation((int) ((d.getWidth()/2)+290), 50);//para ubicar inicialmente donde se muestra la ventana (x, y) jf.setSize(400, 250);//configurando tamaño de la ventana (ancho, alto) jf.setVisible(true);//configurando visualización de la venta } public static void main(String[] args) { GuiJava gj = new GuiJava();//uso de constructor para la ventana } @Override public void actionPerformed(ActionEvent e) {//sobreescribimos el metodo del listener int n1, n2, nr;//variables que almacenaran los numeros de los campos de texto if(e.getSource()==bt1 && jt3.getText().equals("")){//podemos comparar por el contenido del boton //Los campos de texto son de tipo string, asi que tomamos la cadena con el metodo .getText() //y lo almacenamos en la variable. n1 = Integer.parseInt(jt1.getText()); n2 = Integer.parseInt(jt2.getText()); nr = n1 + n2; //realizamos la operacion //mostrando los objetos donde se mostrara el resultado jl3.setVisible(true); jt3.setVisible(true); jt3.setBackground(Color.lightGray); jt3.setText(""+nr);/*mostramos el valor mediante el metodo .setText() como muestra cadenas anteponemos una cadena vacia y concatenamos el resultado*/ } else{ jt1.setText(""); jt2.setText(""); jt3.setText(""); jl3.setVisible(false); jt3.setVisible(false); } } } |
//librerias necesarias import java.awt.Color; import java.awt.Dimension; import java.awt.Insets; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.BorderFactory; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JTextField; public class GuiJava implements ActionListener{//implementando el listener de eventos JButton bt1;//creando variables globales de los botones JLabel jl1, jl2, jl3;//creando variables globales para las etiquetas JTextField jt1, jt2, jt3;//creando variables globales para los campos de texto JFrame jf = new JFrame("Formulario Basico Java");//creacion de ventana con el titulo public GuiJava(){//constructor de la clase jf.setLayout(null);//Configurar como se dispondra el espacio del jframe Dimension d = new Dimension();//objeto para obtener el ancho de la pantalla //Instanciando etiquetas jl1 = new JLabel("Numero 1"); jl2 = new JLabel("Numero 2"); jl3 = new JLabel("="); //Instanciando cuadros de texto jt1 = new JTextField(2); jt2 = new JTextField(2); jt3 = new JTextField(2); //Instanciando boton con texto bt1 = new JButton("+"); //Ubicando los objetos a nuestro gusto jl1.setBounds(30, 40, 60, 25); jt1.setBounds(100, 40, 40, 25); bt1.setBounds(185, 40, 25, 25); jl2.setBounds(235, 40, 60, 25); jt2.setBounds(295, 40, 40, 25); jl3.setBounds(30, 85, 60, 25); jt3.setBounds(100, 85, 40, 25); //Cambiando horientacion texto jt1.setHorizontalAlignment(JTextField.RIGHT); jt2.setHorizontalAlignment(JTextField.RIGHT); jt3.setHorizontalAlignment(JTextField.RIGHT); //Cambiando color, tamaño del borde, como tambien redondeandolo jt1.setBorder(BorderFactory.createLineBorder(Color.red, 2, true)); jt2.setBorder(BorderFactory.createLineBorder(Color.red, 2, true)); jt3.setBorder(BorderFactory.createLineBorder(Color.red, 2, true)); //ocultando el jlabel y el jtextfield del resultado jl3.setVisible(false); jt3.setVisible(false); //añadiendo objetos a la ventana jf.add(jl1); jf.add(jt1); jf.add(bt1); jf.add(jl2); jf.add(jt2); jf.add(jl3); jf.add(jt3); //margenes para texto en boton bt1.setMargin(new Insets(1, 5, 1, 5)); //añadiendo el listener a los botones para manipular los eventos del click bt1.addActionListener(this); jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//finaliza el programa cuando se da click en la X jf.setResizable(false);//para configurar si se redimensiona la ventana jf.setLocation((int) ((d.getWidth()/2)+290), 50);//para ubicar inicialmente donde se muestra la ventana (x, y) jf.setSize(400, 250);//configurando tamaño de la ventana (ancho, alto) jf.setVisible(true);//configurando visualización de la venta } public static void main(String[] args) { GuiJava gj = new GuiJava();//uso de constructor para la ventana } @Override public void actionPerformed(ActionEvent e) {//sobreescribimos el metodo del listener int n1, n2, nr;//variables que almacenaran los numeros de los campos de texto if(e.getSource()==bt1 && jt3.getText().equals("")){//podemos comparar por el contenido del boton //Los campos de texto son de tipo string, asi que tomamos la cadena con el metodo .getText() //y lo almacenamos en la variable. n1 = Integer.parseInt(jt1.getText()); n2 = Integer.parseInt(jt2.getText()); nr = n1 + n2; //realizamos la operacion //mostrando los objetos donde se mostrara el resultado jl3.setVisible(true); jt3.setVisible(true); jt3.setBackground(Color.lightGray); jt3.setText(""+nr);/*mostramos el valor mediante el metodo .setText() como muestra cadenas anteponemos una cadena vacia y concatenamos el resultado*/ } else{ jt1.setText(""); jt2.setText(""); jt3.setText(""); jl3.setVisible(false); jt3.setVisible(false); } } }
Los cambios se han hecho en la linea 22 donde se toma todo el JFrame para ubicar los objetos a nuestro gusto; las lineas de la 38 a la 54 son las que hemos modificado algunas características de los JLabel y JTextField; en el método sobre escrito para el evento del botón se hizo una modificación, es mas parte de lógica que del objetivo del post, así quedara con las modificaciones:
Si ejecutas el segundo ejemplo veremos como algo de lógica y un retoque por aquí y otro por allá harán una aplicación sencilla en algo llamativo 😉
Util, tan util como un pozole bien rico y deliciso ñam ñam en 15 de septiembre, que bida
si quieren agregarle otra funcion al boton o cualquier otro lo que tienen que hacer es
«boton.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent evt){
//Aqui pones tu funcion o mandas llamar una
}
});
¿se podria utilizar java para el acceso a un sistema mediante clave y luego llenar datos?
muy bueno
muy bueno …..excelente
excelente
Hola, necesitaba hacer un formulario simple de avisos en java o html pero poder grabar los datos de ese formulario en un fichero, yo trabajo con filemaker y sql y quería poner un formulario en cada pc y a traves de la Lan recoger los datos desde filemaker, sí tienes alguna idea te lo agradezco, un saludo
interesante!!!
Oye tu programa solo sirve para suma no?
Asi es, el resultado es solo para mostrar que la interfaz puede ser enlazada para mostrar respuestas.
Hola, hago aplicaciones en access utilizando visual basic access y en mi trabajo me dijeron que ya no más aplicaciónes en access que ahora todo en java pero resulta que no se nada de java, he estado viendo tus códigos pero necesito un ejemplo de altas, bajas, cambios y consultas e impresiones, tendrás algún ejemplo que me pueda ayudar a elaborar un programa de mantenimiento (altas, bajas, cambios), si lo tienes ó no lo tienes como quiera gracias tus códigos los voy a tomar como referencia, saludos y felicitaciones desde México D.F.
Amigo quiero en una ventana emergente se le puedan pedir varios datos al usuario en una sola
como
nombre:
Edad:
Fecha de cumpleaños
muchas gracias
Hola amigo ,quiero agradecerte por tus aportes ….Las personas que como tu comparten sus trabajos para que los que saben poco o tenemos poco conocimiento aprendan y tengan mas posibilidades de enriquecersen hacen una excelente labor ,en mi caso me ha gustado mucho la programación y ahora trato de ampliar lo escaso que sé de esta forma investigando en el tiempo que tenga ..ahora solo he mirado por encima este blog mas adelante espero ver mas detalladamente y encontrarme con mucha informacion ,nuevamente muchas gracias…