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.
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
ResponderBorrara 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.
ResponderBorrartxtNumero.setText("");
txtNumero.setFocusable(true);
btnCalcular.setFocusable(false);
Saludos