viernes, 13 de junio de 2014

componentes JTextField y JButton

Que tal compañeros, el día de hoy vamos aprender los siguientes componentes:

JTextField: Son las cajas de texto donde nosotros como usuarios colocamos información, visto como programador todo lo que se escriba dentro de estas cajas se guardara como String, ahora  para guardar números es necesario utilizar el PARSE para así convertir de un dato tipo cadena a un entero o al que necesiten.

JButton: Son los botones con las cuales el programa realiza acciones al presionarlos, ahora visto como programador aquí es donde nosotros colocamos los eventos o las acciones que realizara el botón al ser presionado por el usuario, esto dependerá al tipo de software que realices.

Ahora para entender mejor esto vamos a realizar el tradicional ejercicio de FACTORIAL, pero con su GUI respectivamente. Este ejercicio está dividido en dos archivos o dos clases  recuerden que al final estará el link de descarga.


Codigo:

Archivo VentanaFactorial.

/*
 * Programa: Realiza la operacion del factorial
 * Autor: Include Import
 */
import java.awt.FlowLayout;
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.JOptionPane;
import javax.swing.JTextField;

//Lo nuevo aqui es implements ActionListener esto para poder activar las acciones al boton al ser presionado
public class VentanaFactorial extends JFrame implements ActionListener{
 //Declaramos las variables JLabel, JButton y JTextField necesarios para la ventana.
 private JLabel lblTitulo;
 private JLabel lblInstrucciones;
 private JLabel lblNumero;
 private JTextField txtNumero;
 private JButton btnCalcular; 
 
 //Constructor aqui agregamos los componentes al JFrame
 public VentanaFactorial(){
  super("::: F A C T O R I A L :::");//Le colocamos un titulo a la ventana
  setLayout(null);//Colocamos el layout vacio para que nosotros agreguemos los componentes
  
  //Construimos los componentes 
  lblTitulo = new JLabel("FACTORIAL");
  //Acomodamos nuestro componente mediante cordenadas y definiendo el ancho y el alto
  //De esta manera es el setBounds(x, y, width, height)
  lblTitulo.setBounds(120, 20, 300, 20);
  add(lblTitulo);
  
  //lblInstrucciones
  lblInstrucciones=new JLabel("Ingresa un numero para obtener su factorial");
  //De esta manera es el setBounds(x, y, width, height)
  lblInstrucciones.setBounds(15, 60, 300, 20);
  add(lblInstrucciones);//Agregamos el componente al JFrame
  
  //lblNumero
  lblNumero=new JLabel("Numero: ");
  //De esta manera es el setBounds(x, y, width, height)
  lblNumero.setBounds(25, 100, 300, 20);
  lblNumero.setToolTipText("Ingresa solo numeros..");//Mensaje al estar el mouse puesto encima
  add(lblNumero);//Agregamos el componente al JFrame
  
  //txtNumero
  txtNumero= new JTextField();
  //De esta manera es el setBounds(x, y, width, height)
  txtNumero.setBounds(75, 100, 150, 20);
  add(txtNumero);//Agregamos el componente al JFrame
  
  //btnCalcular
  btnCalcular = new JButton("Calcular");
  //De esta manera es el setBounds(x, y, width, height)
  btnCalcular.setBounds(100, 140, 100, 20);
  add(btnCalcular);//Agregamos el componente al JFrame
  /*
   * Le agregamos al boton el escucha eventos el this significa que al presionar 
   * este boton calcular 
   */
  btnCalcular.addActionListener(this);
 }
 
 //Metodo de actividades en donde aceptamos un evento
 public void actionPerformed(ActionEvent evento) {
        if (evento.getSource()==btnCalcular) {//Si el btnCalcular es presionado
            int num = Integer.parseInt(txtNumero.getText());//Convertimos el String a int
            int res=1;
            for(int cont=1; cont<=num; cont++){
             res*=cont;
            }
            JOptionPane.showMessageDialog(null,"El resultado de es: "+res);//Mostramos el resultado en mensaje
        }
 
 }
}
Archivo MainFactorial.

/*
 * Programa: Realiza la operacion del factorial
 * Autor: Include Import
 */
import javax.swing.JFrame;

public class MainFactorial {
 public static void main(String[] args) {
  //Creamos nuestra ventana
  VentanaFactorial MiFactorial = new VentanaFactorial();
  //Que finalize al presionar la X en la parte superior derecha
  MiFactorial.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  //Tamaño de nuestra ventana
  MiFactorial.setSize(300,300);
  //Que se muestre nuestra ventana y prueben en colocarle false y veran por que...
  MiFactorial.setVisible(true);
  //Para que no nos de los controles de modificar las propiedades de la ventana
  //Pruebenlo colocando el mouse sobre los bordes y veran que no se puede agrandar
  MiFactorial.setResizable(false);
 }

}
Resultado:





Posibles errores:


  • Al utilizar setBounds podemos colocar un componente encima de uno es necesario imaginarse las coordenadas y sobre todo la posición en la que estará el componente.

  • Si al botón no le colocas addActionListener(this) es probable que el botón no funcione o en la clase no le coloques implements ActionListener de igual forma no funcionara si no lo colocas.

Muy bien compañeros hemos llegado al final del post, espero que les haya gustado este ejercicio básico, sobre todo lo hayan entendido y aprendido. No olvides seguirnos por nuestras redes sociales.


2 comentarios:

  1. Gracias por este aporte me sirvio muchisimo solo una pregunta cuando ejecute el programa y le di el valor para que me sacara el factorial al momento de que me salio el mensaje del resultado quise volever a probar pero no me funciono que podra ser perdon por la pregunta apenas estoy aprendiendo java especialmente los Jframe

    ResponderBorrar
  2. a mira aun no llegamos al tema donde posicionamos el foco que mas adelante o si no en el siguiente post lo vemos pero mira el codigo que te dejo es para que al darle al mensaje aceptar lo vuelvas a realizar sin ningun problema. y lo colocaras al final de la llave del IF del archivo VentanaFactorial espero te sirva si no con confianza dime si no lo entendiste.
    txtNumero.setText("");
    txtNumero.setFocusable(true);
    btnCalcular.setFocusable(false);

    Saludos

    ResponderBorrar

Formulario de contacto

Nombre

Correo electrónico *

Mensaje *