¿Te gustaría que este contenido siga siendo gratuito?, puedes apoyar al canal de las siguientes maneras: 1. Donaciones: www.paypal.me/LaGeekipedia 2. Desactivando Adblock y Adblock Plus en TH-cam. 3. Compartiendo los vídeos del canal en foros y redes sociales. Cualquier opción es de gran ayuda. ¡Muchas gracias!
Hola Ernesto en nombre de todos los que estamos aprendiendo de tu curso estamos muy agradecidos por ese gran trabajo gratuito. Yo voy por el aprendizaje de este número 29. Saludos desde Venezuela.
@@LaGeekipediaDeErnesto debo de decirte que he aprendido mas en estos 29 videos que en toda la carrera universitaria en relacion a programacion JAVA eres el Maximo Crack
quité el bloqueo de publicidad sólo porque este hombre se merece que yo vea esas publicidades. Gracias por tan buenos videos y no dude que cuando yo monetice mis programas le voy a hace un buena donación.
Con otros tutoriales tengo la sensación de estar aprendiendo métodos engorrosos, sin embargo, tu contenido me transmite todo lo contrario :) muchas gracias!!
import javax.swing.*; import java.awt.event.*; public class TextField extends JFrame implements ActionListener { private JTextField Campo_1; private JLabel Etiqueta_1; private JButton Pulsador_1, Pulsador_2; public TextField (){ // Constructor igual a la clase por el diseño de cada uno de ellos setLayout (null); // Null para que yo le indique las coordenadas. Etiqueta_1 = new JLabel ("Usuario:"); Etiqueta_1.setBounds (10,10,100,30); add (Etiqueta_1); //Caja de texto Campo_1 = new JTextField(); // Se puede poner texto entre paréntesis Campo_1.setBounds (120,17,150,20); add (Campo_1); // Ahora programando el botón Pulsador_1 = new JButton("Aceptar"); Pulsador_1.setBounds (10,80,100,30); add(Pulsador_1); Pulsador_1.addActionListener (this); Pulsador_2 = new JButton("Salir"); Pulsador_2.setBounds (120,80,100,30); add(Pulsador_2); Pulsador_2.addActionListener (this); } // Parte de capturar el evento del botón public void actionPerformed (ActionEvent P_1) { if (P_1.getSource() == Pulsador_1) { String Texto_1 = Campo_1.getText (); // Obtiene el texto ingresado de Campo_1 y lo pone en Texto_1 setTitle ("Bienvenido " + Texto_1); }
if (P_1.getSource() == Pulsador_2) { System.exit (0); } } public static void main (String args []) {
// Diseño de la interfaz TextField Formulario_1 = new TextField (); Formulario_1.setTitle("Bienvenido "); Formulario_1.setBounds (0,0,300,150); Formulario_1.setVisible (true); Formulario_1.setResizable (true); Formulario_1.setLocationRelativeTo (null); } }
Ernesto, eres genial!!! He aprendido muchísimo más contigo que en la Universidad. Quiero agradecerte por esta noble enseñanza, tienes una manera excelente para enseñar!!! Super claro. Me ha servido muchísimo. Saludos desde Italia!!!
codigo para calculadora con inicio de sesion contraseña opcion para ir a la calculadora o a la sucesion de Fibonacci preguntadote cuantos digitos de la misma quieres y en la calculadora con maximo de 5 digitos import java.util.Scanner; public class Calculadora{ public static void main(String args[]){ Scanner entrada = new Scanner(System.in); String usuario = "", contrasena = "", usuario1 = "", contrasena1 = ""; int opciones = 0, parametro = 0, opcion1 = 1, opcion2 = 2, i = 0, a = 0, b = 1, c = 0, num_uno = 0, num_dos = 0, num_tres = 0, num_cuatro = 0, num_cinco = 0, resultado = 0, resultado1 = 0, resultado2 = 0, resultado3 = 0, signo_uno = 0, signo_dos = 0, signo_tres = 0, signo_cuatro = 0, Fibonacci = 0; System.out.println("Por favor ingrese su nombre de usuario deseado:"); usuario = entrada.nextLine(); System.out.println("Por favor ingrese su contrasena deseada:"); contrasena = entrada.nextLine(); System.out.println("Por favor ingrese su nombre de usuario"); usuario1 = entrada.nextLine(); System.out.println("Por favor ingrese su contrasena"); contrasena1 = entrada.nextLine(); if(usuario.equals(usuario1) && contrasena.equals(contrasena1)){ System.out.println("Sus datos coinciden"); System.out.println("Quiere ingresar a la calculadora (presione 1) o a la Sucesion Fibonacci (presione 2)"); opciones = entrada.nextInt();
if(opciones == 1){ System.out.println("¿Cuantos numeros desea ingresar? (maximo 5)"); parametro = entrada.nextInt(); switch(parametro){ case 1: System.out.println("¿Cual es el numero que desea ingresar?"); num_uno = entrada.nextInt(); System.out.println("Con un numero no se puede hacer una operacion"); break;
case 2: System.out.println("¿Cual es el primer numero que desea ingresar?"); num_uno = entrada.nextInt(); System.out.println("¿Cual es el segundo numero que desea ingresar?"); num_dos = entrada.nextInt(); System.out.println("¿Cual es el signo de la operacion que desea hacer?(1 = suma, 2 = resta 3 = multiplicacion, 4 = division)"); signo_uno = entrada.nextInt(); switch(signo_uno){ case 1: resultado = num_uno + num_dos; break; case 2: resultado = num_uno - num_dos; break; case 3: resultado = num_uno * num_dos; break; case 4: resultado = num_uno / num_dos; break; default: System.out.println("Error"); break; } System.out.println("El resultado de tu operacion: " + resultado); break; case 3: System.out.println("¿Cual es el primer numero que desea ingresar?"); num_uno = entrada.nextInt(); System.out.println("¿Cual es el segundo numero que desea ingresar?"); num_dos = entrada.nextInt(); System.out.println("¿Cual es el tercer numero que desea ingresar?"); num_tres = entrada.nextInt(); System.out.println("¿Cual es el primer signo de su operacion que desea hacer?(1 = suma, 2 = resta 3 = multiplicacion, 4 = division)"); signo_uno = entrada.nextInt(); System.out.println("¿Cual es el segundo signo de su operacion que desea hacer?(1 = suma, 2 = resta 3 = multiplicacion, 4 = division)"); signo_dos = entrada.nextInt(); switch(signo_uno){ case 1: resultado = num_uno + num_dos; break; case 2: resultado = num_uno - num_dos; break; case 3: resultado = num_uno * num_dos; break; case 4: resultado = num_uno / num_dos; break; default: System.out.println("Error"); break; } switch(signo_dos){ case 1: resultado1 = resultado + num_tres; break; case 2: resultado1 = resultado - num_tres; break; case 3: resultado1 = resultado * num_tres; break; case 4: resultado1 = resultado / num_tres; break; default: System.out.println("Error"); break; } System.out.println("El resultado de tu operacion: " + resultado1); break; case 4: System.out.println("¿Cual es el primer numero que desea ingresar?"); num_uno = entrada.nextInt(); System.out.println("¿Cual es el segundo numero que desea ingresar?"); num_dos = entrada.nextInt(); System.out.println("¿Cual es el tercer numero que desea ingresar?"); num_tres = entrada.nextInt(); System.out.println("¿Cual es el cuarto numero que desea ingresar?"); num_cuatro = entrada.nextInt(); System.out.println("¿Cual es el primer signo de su operacion que desea hacer?(1 = suma, 2 = resta 3 = multiplicacion, 4 = division)"); signo_uno = entrada.nextInt(); System.out.println("¿Cual es el segundo signo de su operacion que desea hacer?(1 = suma, 2 = resta 3 = multiplicacion, 4 = division)"); signo_dos = entrada.nextInt(); System.out.println("¿Cual es el tercer signo de su operacion que desea hacer?(1 = suma, 2 = resta 3 = multiplicacion, 4 = division)"); signo_tres = entrada.nextInt(); switch(signo_uno){ case 1: resultado = num_uno + num_dos; break; case 2: resultado = num_uno - num_dos; break; case 3: resultado = num_uno * num_dos; break; case 4: resultado = num_uno / num_dos; break; default: System.out.println("Error"); break; } switch(signo_dos){ case 1: resultado1 = resultado + num_tres; break; case 2: resultado1 = resultado - num_tres; break; case 3: resultado1 = resultado * num_tres; break; case 4: resultado1 = resultado / num_tres; break; default: System.out.println("Error"); break; } switch(signo_tres){ case 1: resultado2 = resultado1 + num_cuatro; break; case 2: resultado2 = resultado1 - num_cuatro; break; case 3: resultado2 = resultado1 * num_cuatro; break; case 4: resultado2 = resultado1 / num_cuatro; break; default: System.out.println("Error"); break; } break; case 5: System.out.println("¿Cual es el primer numero que desea ingresar?"); num_uno = entrada.nextInt(); System.out.println("¿Cual es el segundo numero que desea ingresar?"); num_dos = entrada.nextInt(); System.out.println("¿Cual es el tercer numero que desea ingresar?"); num_tres = entrada.nextInt(); System.out.println("¿Cual es el cuarto numero que desea ingresar?"); num_cuatro = entrada.nextInt(); System.out.println("¿Cual es el quinto numero que desea ingresar?"); num_cinco = entrada.nextInt(); System.out.println("¿Cual es el primer signo de su operacion que desea hacer?(1 = suma, 2 = resta 3 = multiplicacion, 4 = division)"); signo_uno = entrada.nextInt(); System.out.println("¿Cual es el segundo signo de su operacion que desea hacer?(1 = suma, 2 = resta 3 = multiplicacion, 4 = division)"); signo_dos = entrada.nextInt(); System.out.println("¿Cual es el tercer signo de su operacion que desea hacer?(1 = suma, 2 = resta 3 = multiplicacion, 4 = division)"); signo_tres = entrada.nextInt(); System.out.println("¿Cual es el cuarto signo de su operacion que desea hacer?(1 = suma, 2 = resta 3 = multiplicacion, 4 = division)"); signo_cuatro = entrada.nextInt(); switch(signo_uno){ case 1: resultado = num_uno + num_dos; break; case 2: resultado = num_uno - num_dos; break; case 3: resultado = num_uno * num_dos; break; case 4: resultado = num_uno / num_dos; break; default: System.out.println("Error"); break; } switch(signo_dos){ case 1: resultado1 = resultado + num_tres; break; case 2: resultado1 = resultado - num_tres; break; case 3: resultado1 = resultado * num_tres; break; case 4: resultado1 = resultado / num_tres; break; default: System.out.println("Error"); break; } switch(signo_tres){ case 1: resultado2 = resultado1 + num_cuatro; break; case 2: resultado2 = resultado1 - num_cuatro; break; case 3: resultado2 = resultado1 * num_cuatro; break; case 4: resultado2 = resultado1 / num_cuatro; break; default: System.out.println("Error"); break; } switch(signo_cuatro){ case 1: resultado3 = resultado2 + num_cinco; break; case 2: resultado3 = resultado2 - num_cinco; break; case 3: resultado3 = resultado2 * num_cinco; break; case 4: resultado3 = resultado2 / num_cinco; break; default: System.out.println("Error"); break; } break; default: System.out.println("Error, numero de digitos incorrecto"); break; } } else { System.out.println("Serie Fibonacci: "); System.out.println("Cuantos digitos de la serie Fibonacci quiere "); Fibonacci = entrada.nextInt(); for(i = 0; i < Fibonacci; i++){ if(i < Fibonacci - 1){ System.out.print(a + ","); c = a + b; a = b; b = c; } else { System.out.print(a); } } System.out.println(""); i = 0; b = 1; a = 0; c = 0; }
} else { System.out.println("Sus datos no coinciden"); } } }
Leelo! Quizas te de una idea para un nuevo proyecto para probar tus capacidades! Bro, no creo que leas, pero estoy haciendo uno parecido, solo que, el programa no pregunta cuantas variables quieres, puedes colocar hasta que quieras dejar de hacer operaciones, lo quise hacer asi pero dar la similitud de una calculadora real, cuando calculas los 2 primeros digitos, si quieres seguir pones un tercero y colocas la operacion que quieres realizar respecto al 2do, eso lo hice posible gracias a un array bidimencional en el cual, los datos que coloques se imprimen en la primera fila y los resultados en la segunda, es una rareza matematica, justo haciendo este comentario me llego otra idea para poder hacerlo quizas lo intente mas adelante. Respecto al apartado de sucesion de fibonacci, quise, agregarle un poco mas de complejidad y si el usuario desea empezar desde un N_esimo termino en especifico de la sucesion que asi sea, y que tenga x cantidad de terminos que el usuario desee, asi, si el usuario quiere conocer el termino 50 de la sucesion, pueda hacerlo sin tener que imprimir los 49 anteriores (Si, otro dolor de cabeza matematico), llevo en esto dos dias ajjasjak, se me ha complicado mucho la 2da parte de la secuencia. Dividi el proyecto en 2 partes: La calculadora, la sucesion y el apartado de inicio de sesion y la eleccion de utilidad. Cuando lo termine paso el codigo para el que le interese! Aunque no creo que lo veo alguien jaja
excelente explicación, muy claro. yo loa hacia desde jFrame de netbeans sin entenderlo , pero ahora gracias a vos las cosas me quedan mucho mas claro. saludos
Excelente Ernesto. Mil gracias desde Colombia. Todo muy bien explicado, todo se entiende, TODO FUNCIONA! Mil gracias por todo el esfuerzo y la dedicación. Un abrazo.
Gracias por todo Ernesto ... Pude agregar usuario contraseña con sus respectivas textfield además dos botones uno de aceptar y uno para salir en base a lo que ya hemos visto muchas Gracias Ernesto Dios te bendiga 💕
También se puede diseñar la interfaz dentro del constructor y llamarlo desde main: public Formulario(){ setLayout(null); setBounds(0,0,300,150); setLocationRelativeTo(null); setResizable(false); setVisible(true); setDefaultCloseOperation(EXIT_ON_CLOSE); luego armamos los Labels, Botones, etc. Dentro del mismo constructor. Y luego llamamos desde main al constructor: public static void main(String args[]){ new Formulario();
Muy buenos videos! me ocurrió (por hacer copy paste) que me olvidé de cambiar la creación del objeto formulario, ya que le había cambiado el nombre a la clase y al constructor (consecuentemente). Entonces cuando lo corría, me creaba una ventana completamente diferente a la esperada... la del ejercicio anterior! me llevó un tiempo darme cuenta del error ya que era lógico, y son los más complicados.
Sinceramente se me hace mucho mas cómodo poner las características de mi ventana en el constructor de la clase que no tiene el método main, me parece mas ordenado. :) Buenísimo el video! Como siempre! jaja
Estoy creando un grupo en whatsapp, para aquellos que tengamos dudas, comentarios, opiniones, queramos aportar y/o impulsar algo. Si alguien gusta, busquenme. SALUDOS.
Yo lo hice un poco diferente porque le agregué unos detallitos al código y me sorprendió porque funcionó. De verdad que estoy aprendiendo. Este pana es lo máximo. import javax.swing.*; import java.awt.event.*; public class Usuario extends JFrame implements ActionListener{ private JTextField textoUsuario; private JButton bAceptar, bCerrar; private JLabel label1; public Usuario(){ setLayout(null); bAceptar = new JButton("Aceptar"); bAceptar.setBounds(10,100,90,30); add(bAceptar); bAceptar.addActionListener(this); bCerrar = new JButton("Cerrar"); bCerrar.setBounds(110,100,90,30); add(bCerrar); bCerrar.addActionListener(this); label1 = new JLabel("Usuario:"); label1.setBounds(10,10,100,30); add(label1); textoUsuario = new JTextField(); textoUsuario.setBounds(120,17,150,20); add(textoUsuario); } public void actionPerformed(ActionEvent e){ if(e.getSource() == bAceptar){ String texto = textoUsuario.getText(); setTitle(texto); textoUsuario.setText(""); }if(e.getSource() == bCerrar){ System.exit(0); } } public static void main(String[] args){ Usuario usuario1 = new Usuario(); usuario1.setBounds(0,0,300,200); usuario1.setVisible(true); usuario1.setResizable(false); usuario1.setLocationRelativeTo(null); } }
Que tal Ernesto, primero que nada gracias por la info! Soy nuevo en esto y estoy aprendiendo lo necesario para dar el primer paso en programacion! Por otro lado me gustaria preguntarte si puedo obtener un documento donde me diga que hace cada comando, Ej: getSource = Recupera la info de un espacio de memoria antes creado! getText = setVisible = Hace visible la interfas etc... Tendras algun documento con toda la info necesaria?
no se ustedes pero yo siempre ademas de seguir todo lo que hace Ernesto, le agrego siempre un botón de salir al programa, ya que me olvidé del comando para salir desde Cmd jsjsjs
Hola Ernesto, muchísimas gracias por transmitir tus conocimientos, estoy aprendiendo mucho ;) Tengo tres preguntas y si tienes tiempo me gustaría que me contestaras. 1. En la pantalla CMD no me aparece correctamente la letra "ñ", tildes y otros símbolos. ¿Podrías poner un enlace o decirme como se puede configurar correctamente para solucionarlo? 2. En la interface no me aparece el marco de la ventana creada (parte izquierda, derecha y de abajo). ¿Es porque hay algún error o porque el jdk está más actualizado al que utilizas? 3. En este ejercicio la ventana esta perfecta y funciona correctamente pero no se puede aceptar (dar al botón) utilizando el teclado con el "enter". Muchas gracias de nuevo y explicas genial.
hola! te respondo la 1. cuando guardás el archivo en el bloc de notas, fijate que hay una opción abajo que dice "codificación" tenes que cambiarlo a ANSI, le das guardar y ya está, te va a tomar los símbolos el cmd.
¿Qué diferencia hay entre guardar el texto de JTextfield en una variable para posteriormente ponerlo en setTitle("variable"); a hacerlo de manera directa con setTitle(textfield1.getText()); ?
Hola, le adicione dos botones, salir y limpiar.. import javax.swing.*; import java.awt.event.*; public class LoginInterfaz extends JFrame implements ActionListener{
private JButton btnaceptar,btnsalir,btnlimpiar; private JLabel lbltexto; private JTextField tfcampo; public LoginInterfaz(){ setLayout(null); lbltexto = new JLabel("Usuario:"); lbltexto.setBounds(10,10,100,30); add(lbltexto); tfcampo = new JTextField(); tfcampo.setBounds(120,17,180,20); add(tfcampo); btnaceptar = new JButton("Aceptar"); btnaceptar.setBounds(10,60,80,30); add(btnaceptar); btnaceptar.addActionListener(this); btnsalir = new JButton("Salir"); btnsalir.setBounds(100,60,80,30); add(btnsalir); btnsalir.addActionListener(this); btnlimpiar = new JButton("Limpiar"); btnlimpiar.setBounds(195,60,80,30); add(btnlimpiar); btnlimpiar.addActionListener(this); } public void actionPerformed(ActionEvent event){ if (event.getSource()==btnaceptar) { String texto = tfcampo.getText(); setTitle(texto); }if (event.getSource()==btnsalir) { System.exit(0); }if (event.getSource()==btnlimpiar) { tfcampo.setText(""); } } public static void main(String args[]){ LoginInterfaz lg = new LoginInterfaz(); lg.setBounds(0,0,400,250); lg.setVisible(true); lg.setResizable(false); lg.setLocationRelativeTo(null); } }
He entendido todo desde que empezamos a trabajar con interfaces exepto una cosa y son las coordenadas. Se que aprendere porque ahora me faltan muchos videos por ver. Pero supongamos que con lo que ya he aprendido intente crear un programa, para saber que coordena darle a lo que quiero dentro de mi interfaz, ¿deberia primero tener en cuenta las dimensiones que le dare a la interfaz verdad? Y mediante esas dimensiones calcular donde quiero que aparezca lo que va dentro de la interfaz?
¡Hola!, así es, al diseñar una interfaz gráfica, lo primero es tomar en cuenta el alto y ancho que tendrá la interfaz, para posteriormente saber en que posición colocaras cada uno de los componentes que estés utilizando, al principio es una tarea un tanto fastidiosa, pero conforme vas tomando experiencia, te ira resultado algo muy sencillo. Saludos.
mira el primer espacio digamos (0, , , ,) es en el eje X osea horizontalmente, en el segundo espacio(0, 0, , , ) es en el eje Y osea verticalmente, en el tercer espacio (0, 0, 0, ,) es width osea ancho y en el cuarto espacio (0, 0, 0, 0) es height osea alto y hay ya lo puedes manejar las coordenadas a tu gusto quiero mi like :'v.
hola, ernesto tengo una duda veo que a ti en el video te aparece lo que escribes en la esquina izquierda a mi lo que escribo en el cuadro me aparece en el centro de la parte superior, ¿porque ocurre esto?
felicitaciones Ernesto, excelentes videos, tengo una duda, como hiciste para que el titulo te apareciera en la parte izquierda de la ventana y no centrado, gracias
Hola Ernesto... porque el Titulo de la ventana se muestra al centro? ya revice el listado varias veces y no encuentro el porque... Gracias de antemano.
Hola Ernesto muy buen curso tengo una duda en el tema #29 mi interfas no me aparece ni el usuario ni la etiqueta solo el botón y me aparece en el centro cheque coordenadas pero son las mismas que las tuyas me podrías ayudar saludos
Y si te digo que en la Universidad JAMAS me enseñaron esto ! unicamente se preocuparon por enseñarme lo que es en si la POO pero nunca recibi una clase que se tratase de interfaces graficas ! igual se que todo esto se simplifica con los asistentes que existen en los IDES pero coño pase 5 casi 6 años de mi universidad y jamas me enseñaron esto !
¡Hola!, lamentablemente las universidades se apegan a los programas que les establecen. No obstante, es un gusto saber que el contenido ha resultado de tu agrado. Saludos.
Hola, me sale el siguiente error: Exception in thread "main" java.lang.NullPointerException at Formulario.(Formulario.java:20) at Formulario.main(Formulario.java:32)
Hola Ernesto quiero consultar si o si siempre que estemos creando formularios con lo heredado de la carpeta JFrame debemos llamar a nuestra clase Formulario?
aqui mi codigo con una interfas donde le puse dos etiquetas y la segunda es interactiva junto con el boton aceptar por favor si desean aportar algun comentario acerca de comomejorarla se agradece =) textfield1 = new JTextField(); textfield1.setBounds(120,17,150,20); add(textfield1); boton1 = new JButton("aceptar"); boton1.setBounds(10,80,100,30); add(boton1); boton1.addActionListener(this); boton2 = new JButton("cerrar"); boton2.setBounds(150,80,100,30); add(boton2); boton2.addActionListener(this);
¡Hola!, básicamente lo que intento al utilizar las estructuras condicionales, es fomentar la validación de los eventos y controlar de manera anticipada las acciones de los componentes. Eso es lo que yo recomiendo, sin embargo, la lógica de cada programador es diferente y por supuesto que existen distintas maneras de lograr el mismo resultado. Saludos.
OLLE AMIGO TU SABES PORQUE ME SALE ERROR EN ESTA PARTE DEL CODIGO. NO ENTIENDO PORQUE SI ESTA BIEN ESCRITO AQUI ES DONDE ME SALE EL ERROR public class Registro extends implemets ActionListener{
Alguien me puede ayudar me sale este error: Formulario is not abstract and does not override abstract method actionPerformed(ActionEvent) in ActionListener public class Formulario extends JFrame implements ActionListener{ ^ 1 error
Hola Ernesto, te felicito por los cursos, todo muy clro y facil de entender, estoy intentando compilar mi código pero me arroja este error: javac: invalid flag: VentanaUsuario,java Usage: javac use -help for a list of possible options por favor ayúdame porque lo he revisado y comparado con el tuyo y otros y no logro ver el error. Mil Gracias de antemano. Dender Venezuela PD: te anexo el código: import javax.swing.*; import java.awt.event.*; public class VentanaUsuario extends JFrame implements ActionListener{ private JButton boton1, boton2; private JLabel label1; private JTextField textoin; public VentanaUsuario(){ setLayout(null); boton1 = new JButton("ACEPTAR"); boton1.setBounds(10,80,100,30); add(boton1); boton1.addActionListener(this); boton2 = new JButton("SALIR"); boton2.setBounds(110,80,100,30); add(boton2); boton2.addActionListener(this); label1 = new JLabel("USUARIO:"); label1.setBounds(10,10,100,30); add(label1); textoin = new JTextField(); textoin.setBounds(120,17,150,20); add(textoin); } public void actionPerformed(ActionEvent seleccion){ if(seleccion.getSource() == boton1){ String texto = textoin.getText(); setTitle(texto); } if(seleccion.getSource() == boton2){ System.exit(0); } } public static void main(String agrs[]){ VentanaUsuario ventana1 = new VentanaUsuario(); ventana1.setBounds(0,0,300,150); ventana1.setVisible(true); ventana1.setResizable(false); ventana1.setLocationRelativeTo(null); } }
¿Cómo hago para en vez de obtener texto y meterlo a una String con .getText, poder obtener ese texto y meterlo en un Int o en un Double?, por favor responde :(
Solo me puse a investigar un poco y conseguí una manera: (variable)(nombre)=Double.parseDouble(String); double BsS = Double.parseDouble(Field); Así que guardé el texto de JTextField en un String y lo transformé de String a Double. Luego tenía un problema porque ese número lo quería dividir entre 100.000,00. Pero cuando la persona ingresaba 10 millones o más (10.000.000) salía 1.0E69 o algo así. Entonces tuve que investigar y conseguí una librería llamada import java.math.BigDecimal; Que era parecida a la Double pero con más espacio, según entendí el espacio es infinito, hasta donde pueda la pc antes de quedarse sin memoria o algo así :) Luego solo declaraba una variable llamada BigDecimal, con esta sintaxis: (variable) (nombre) = (declaración) (Valor) BigDecimal multiplicacion = new BigDecimal(BsS * 100000); Como ya había pasado el texto al Double de nombre BsS, y no sabía como pasar texto de String a BigDecimal, decidí utilizar el Double y hacer que cumpla la función que le pedí, pero almacenando todo en BigDecimal para que no haya problema. No es mucho pero estoy orgulloso de haber resuelto el problema por mí mismo, lo peor es que Justo me quedé sin internet cuando conseguí que import java.math.BigDecimal; era una librería, así que lo demás lo tuve que inventar. Gracias Ernesto que me ayudó a comprender como funciona java y mejorar mi lógica de programación
Hola ernesto! tengo un problema. primero te quiero felicitar y agradecer por compartir tu conocimiento . al agregar el sig texto a mi clase me tira error "implements ActionListener" y el programa obviamente no se ejecuta bien. te adjunto el nombre del error que me muestra eclipce: " Multiple markers at this line - The serializable class Formularios does not declare a static final serialVersionUID field of type long - The type Formularios must implement the inherited abstract method ActionListener.actionPerformed(ActionEvent)" espero tu respuesta gracias!
ese error te lo lanza por que no estas invocando la interfaz o no estas implementando todos sus metodos es una de las reglas de las interfaces cuando invoques una debes implementar todos los metodos que esta contenga o si no tu clase debe ser Abstracta pero ese es otro tema !°
te falto un pequeño detalle no es la gran cosa pero te va gustar que tu ventana tenga un titulo Formulario formulario_1 = new Formulario(); formulario_1.setTitle("Bienvenido"); formulario_1.setBounds(0,0,300,150); formulario_1.setResizable(false); formulario_1.setVisible(true); formulario_1.setLocationRelativeTo(null);
El código me funciona cuando lo ejecuto desde netbeans. Cuando trato de compilarlo desde cmd o vscode me da error . . . vs code: "The method getText() is undefined for the type JTextField" cmd : - cannot find symbol - method getText(); - variable textfield1 of type JTextField
Adjunto mi código, con boton exit y diferente diseño: import java.awt.event.*; import javax.swing.*; public class Form extends JFrame implements ActionListener{ private JLabel label,title; private JTextField user; private JButton exit,accept;
public Form(){ setLayout(null); title = new JLabel("Log In"); title.setBounds(125,10,50,20); add(title);
label = new JLabel("User:"); label.setBounds(25,37,100,30); add(label); exit = new JButton("Exit"); exit.setBounds(150,80,100,30); exit.addActionListener(this); add(exit);
accept = new JButton("Accept"); accept.setBounds(25,80,100,30); accept.addActionListener(this); add(accept); user = new JTextField(); user.setBounds(100,40,150,25); add(user); } public void actionPerformed(ActionEvent click){ if(click.getSource() == exit){ System.exit(0); }else if(click.getSource() == accept){ setTitle(user.getText()); } } public static void main(String args[]){ Form one = new Form(); one.setBounds(0,0,290,175); one.setResizable(false); one.setLocationRelativeTo(null); one.setVisible(true); } }
¿Te gustaría que este contenido siga siendo gratuito?, puedes apoyar al canal de las siguientes maneras:
1. Donaciones: www.paypal.me/LaGeekipedia
2. Desactivando Adblock y Adblock Plus en TH-cam.
3. Compartiendo los vídeos del canal en foros y redes sociales.
Cualquier opción es de gran ayuda. ¡Muchas gracias!
Voy a donarte de alguna forma bro porque he aprendido muchisimo con tus videos, de verdad gracias!
Hola cómo se desactiva adblock? Y adblock plus?
La verdad he aprendido mucho, cuando acabe el curso hago una donacion
Hola Ernesto en nombre de todos los que estamos aprendiendo de tu curso estamos muy agradecidos por ese gran trabajo gratuito. Yo voy por el aprendizaje de este número 29. Saludos desde Venezuela.
excelente curso de java, aprendo mas contigo que en la universidad.
hola, quiero decirte que haces los mejores tutoriales de youtube y e aprendido mucho, espero no dejes de seguir haciendo. muchas gracias
¡Muchas gracias!, por supuesto que seguiré aquí hasta que la plataforma lo permita.
Saludos.
@@LaGeekipediaDeErnesto grande
@@LaGeekipediaDeErnesto debo de decirte que he aprendido mas en estos 29 videos que en toda la carrera universitaria en relacion a programacion JAVA eres el Maximo Crack
Gracias maestro Ernesto❤
Logre hacer una calculadora basica despues de un poco de estres jaja :)❤
Si la quieren hacer les dejo el codigo como referencia aunque no es el mejor y posiblemente tiene algunos errores jaja(no se burlen :( )
(Guardar como Calculadorar)
========================================
import javax.swing.*;
import java.awt.event.*;
public class Calculadorar extends JFrame implements ActionListener {
private JButton multiplicacion, division, resta, suma, igual, punto, cerrar, borrar, uno, dos, tres, cuatro, cinco, seis, siete, ocho, nueve, cero;
private JTextField pantalla1;
double numUno = 0;
double numDos = 0;
String operacion = "";
double resultado = 0;
public Calculadorar() {
setLayout(null);
pantalla1 = new JTextField();
pantalla1.setBounds(15,15,355,100);
add(pantalla1);
cero = new JButton ("0");
cero.setBounds(105,475,85,70);
add(cero);
cero.addActionListener(this);
uno = new JButton ("1");
uno.setBounds(15,400,85,70);
add(uno);
uno.addActionListener(this);
dos = new JButton("2");
dos.setBounds(105,400,85,70);
add(dos);
dos.addActionListener(this);
tres = new JButton("3");
tres.setBounds(195,400,85,70);
add(tres);
tres.addActionListener(this);
cuatro = new JButton("4");
cuatro.setBounds(15,325,85,70);
add(cuatro);
cuatro.addActionListener(this);
cinco = new JButton("5");
cinco.setBounds(105,325,85,70);
add(cinco);
cinco.addActionListener(this);
seis = new JButton("6");
seis.setBounds(195,325,85,70);
add(seis);
seis.addActionListener(this);
siete = new JButton("7");
siete.setBounds(15,250,85,70);
add(siete);
siete.addActionListener(this);
ocho = new JButton("8");
ocho.setBounds(105,250,85,70);
add(ocho);
ocho.addActionListener(this);
nueve = new JButton("9");
nueve.setBounds(195,250,85,70);
add(nueve);
nueve.addActionListener(this);
multiplicacion = new JButton("x");
multiplicacion.setBounds(285,400,85,70);
add(multiplicacion);
multiplicacion.addActionListener(this);
suma = new JButton("+");
suma.setBounds(285,250,85,70);
add(suma);
suma.addActionListener(this);
resta = new JButton("-");
resta.setBounds(285,325,85,70);
add(resta);
resta.addActionListener(this);
division = new JButton("÷");
division.setBounds(285,175,85,70);
add(division);
division.addActionListener(this);
igual = new JButton("=");
igual.setBounds(285,475,85,70);
add(igual);
igual.addActionListener(this);
punto = new JButton(".");
punto.setBounds(195,475,85,70);
add(punto);
punto.addActionListener(this);
borrar = new JButton("C");
borrar.setBounds(195,175,85,70);
add(borrar);
borrar.addActionListener(this);
cerrar = new JButton("Cerrar");
cerrar.setBounds(15,175,100,40);
add(cerrar);
cerrar.addActionListener(this);
}
public void actionPerformed(ActionEvent e) {
if(e.getSource() == cero){
pantalla1.setText(pantalla1.getText() + "0");
}
else if(e.getSource() == uno){
pantalla1.setText(pantalla1.getText() + "1");
}
else if(e.getSource() == dos){
pantalla1.setText(pantalla1.getText() + "2");
}
else if(e.getSource() == tres){
pantalla1.setText(pantalla1.getText() + "3");
}
else if(e.getSource() == cuatro){
pantalla1.setText(pantalla1.getText() + "4");
}
else if(e.getSource() == cinco){
pantalla1.setText(pantalla1.getText() + "5");
}
else if(e.getSource() == seis){
pantalla1.setText(pantalla1.getText() + "6");
}
else if(e.getSource() == siete){
pantalla1.setText(pantalla1.getText() + "7");
}
else if(e.getSource() == ocho){
pantalla1.setText(pantalla1.getText() + "8");
}
else if(e.getSource() == nueve){
pantalla1.setText(pantalla1.getText() + "9");
}
else if(e.getSource() == punto){
pantalla1.setText(pantalla1.getText() + ".");
}
else if(e.getSource() == multiplicacion){
numUno = Double.parseDouble(pantalla1.getText());
pantalla1.setText("");
operacion = "x";
}
else if(e.getSource() == suma){
numUno = Double.parseDouble(pantalla1.getText());
pantalla1.setText("");
operacion = "+";
}
else if(e.getSource() == resta){
numUno = Double.parseDouble(pantalla1.getText());
pantalla1.setText("");
operacion = "-";
}
else if(e.getSource() == division){
numUno = Double.parseDouble(pantalla1.getText());
pantalla1.setText("");
operacion = "÷";
}
else if(e.getSource() == borrar){
pantalla1.setText("");
}
else if(e.getSource() == cerrar){
System.exit(0);
}
else if(e.getSource() == igual){
numDos = Double.parseDouble(pantalla1.getText());
switch(operacion){
case "+": resultado = numUno + numDos;
break;
case"-": resultado = numUno - numDos;
break;
case"x": resultado = numUno * numDos;
break;
case "÷": resultado = numUno / numDos;
break;
}
pantalla1.setText(resultado + "");
}
}
public static void main(String args[]) {
Calculadorar interfaz1 = new Calculadorar();
interfaz1.setTitle("Calculadora");
interfaz1.setBounds(0,0,400,600);
interfaz1.setVisible(true);
interfaz1.setLocationRelativeTo(null);
interfaz1.setResizable(false);
}
}
Guau, te tuvo que estresar bastante pero al hacerlo lograste comprender mejor el tema ¿no es asi?
que hermosos videos, enserio te pasaste, espero que puedas monetizarlo, para que no sea una "perdida de tiempo" para ti. :)
quité el bloqueo de publicidad sólo porque este hombre se merece que yo vea esas publicidades. Gracias por tan buenos videos y no dude que cuando yo monetice mis programas le voy a hace un buena donación.
Cada que avanza el curso se pone más interesante
jj siempre recargo la pagina hasta que salga anuncio y lo veo completo . Es mi forma de donar
Uno ayuda de cualquier forma cuando quiere, esto es un ejemplo, me gusta.
:)
Te juro que cuando trabaje de programador te dono grande!! Y gracias
Ya trabajas de programador???
tengo la misma meta, mi 1er sueldo al profe
PRESENTE...
HOY, MAÑANA Y SIEMPRE!
si sigue subiendo vídeos, te doy mi herencia
¡Hola Fabian!, es correcto, los vídeos se siguen publicando, actualmente vamos en el vídeo 81 del curso java intermedio. Saludos.
Quiero felicitarlo por esos excelentes tutoriales , eres un gran instructor. Gracias
Definitivamente me queda todo claro con tus vídeos, te felicito. Gracias.
Con otros tutoriales tengo la sensación de estar aprendiendo métodos engorrosos, sin embargo, tu contenido me transmite todo lo contrario :) muchas gracias!!
import javax.swing.*;
import java.awt.event.*;
public class TextField extends JFrame implements ActionListener {
private JTextField Campo_1;
private JLabel Etiqueta_1;
private JButton Pulsador_1, Pulsador_2;
public TextField (){
// Constructor igual a la clase por el diseño de cada uno de ellos
setLayout (null);
// Null para que yo le indique las coordenadas.
Etiqueta_1 = new JLabel ("Usuario:");
Etiqueta_1.setBounds (10,10,100,30);
add (Etiqueta_1);
//Caja de texto
Campo_1 = new JTextField();
// Se puede poner texto entre paréntesis
Campo_1.setBounds (120,17,150,20);
add (Campo_1);
// Ahora programando el botón
Pulsador_1 = new JButton("Aceptar");
Pulsador_1.setBounds (10,80,100,30);
add(Pulsador_1);
Pulsador_1.addActionListener (this);
Pulsador_2 = new JButton("Salir");
Pulsador_2.setBounds (120,80,100,30);
add(Pulsador_2);
Pulsador_2.addActionListener (this);
}
// Parte de capturar el evento del botón
public void actionPerformed (ActionEvent P_1) {
if (P_1.getSource() == Pulsador_1) {
String Texto_1 = Campo_1.getText ();
// Obtiene el texto ingresado de Campo_1 y lo pone en Texto_1
setTitle ("Bienvenido " + Texto_1);
}
if (P_1.getSource() == Pulsador_2) {
System.exit (0);
}
}
public static void main (String args []) {
// Diseño de la interfaz
TextField Formulario_1 = new TextField ();
Formulario_1.setTitle("Bienvenido ");
Formulario_1.setBounds (0,0,300,150);
Formulario_1.setVisible (true);
Formulario_1.setResizable (true);
Formulario_1.setLocationRelativeTo (null);
}
}
Ernesto, eres genial!!! He aprendido muchísimo más contigo que en la Universidad. Quiero agradecerte por esta noble enseñanza, tienes una manera excelente para enseñar!!! Super claro. Me ha servido muchísimo. Saludos desde Italia!!!
Solo comento para darle notoriedad a este tutorial, realmente lo merece
Excelente como siempre, Gracias nuevamente buenisimmmooo
codigo para calculadora con inicio de sesion contraseña opcion para ir a la calculadora o a la sucesion de Fibonacci preguntadote cuantos digitos de la misma quieres y en la calculadora con maximo de 5 digitos
import java.util.Scanner;
public class Calculadora{
public static void main(String args[]){
Scanner entrada = new Scanner(System.in);
String usuario = "", contrasena = "", usuario1 = "", contrasena1 = "";
int opciones = 0, parametro = 0, opcion1 = 1, opcion2 = 2, i = 0, a = 0, b = 1, c = 0, num_uno = 0, num_dos = 0, num_tres = 0, num_cuatro = 0, num_cinco = 0, resultado = 0, resultado1 = 0, resultado2 = 0, resultado3 = 0, signo_uno = 0, signo_dos = 0, signo_tres = 0, signo_cuatro = 0, Fibonacci = 0;
System.out.println("Por favor ingrese su nombre de usuario deseado:");
usuario = entrada.nextLine();
System.out.println("Por favor ingrese su contrasena deseada:");
contrasena = entrada.nextLine();
System.out.println("Por favor ingrese su nombre de usuario");
usuario1 = entrada.nextLine();
System.out.println("Por favor ingrese su contrasena");
contrasena1 = entrada.nextLine();
if(usuario.equals(usuario1) && contrasena.equals(contrasena1)){
System.out.println("Sus datos coinciden");
System.out.println("Quiere ingresar a la calculadora (presione 1) o a la Sucesion Fibonacci (presione 2)");
opciones = entrada.nextInt();
if(opciones == 1){
System.out.println("¿Cuantos numeros desea ingresar? (maximo 5)");
parametro = entrada.nextInt();
switch(parametro){
case 1: System.out.println("¿Cual es el numero que desea ingresar?");
num_uno = entrada.nextInt();
System.out.println("Con un numero no se puede hacer una operacion");
break;
case 2: System.out.println("¿Cual es el primer numero que desea ingresar?");
num_uno = entrada.nextInt();
System.out.println("¿Cual es el segundo numero que desea ingresar?");
num_dos = entrada.nextInt();
System.out.println("¿Cual es el signo de la operacion que desea hacer?(1 = suma, 2 = resta 3 = multiplicacion, 4 = division)");
signo_uno = entrada.nextInt();
switch(signo_uno){
case 1: resultado = num_uno + num_dos;
break;
case 2: resultado = num_uno - num_dos;
break;
case 3: resultado = num_uno * num_dos;
break;
case 4: resultado = num_uno / num_dos;
break;
default: System.out.println("Error");
break;
}
System.out.println("El resultado de tu operacion: " + resultado);
break;
case 3: System.out.println("¿Cual es el primer numero que desea ingresar?");
num_uno = entrada.nextInt();
System.out.println("¿Cual es el segundo numero que desea ingresar?");
num_dos = entrada.nextInt();
System.out.println("¿Cual es el tercer numero que desea ingresar?");
num_tres = entrada.nextInt();
System.out.println("¿Cual es el primer signo de su operacion que desea hacer?(1 = suma, 2 = resta 3 = multiplicacion, 4 = division)");
signo_uno = entrada.nextInt();
System.out.println("¿Cual es el segundo signo de su operacion que desea hacer?(1 = suma, 2 = resta 3 = multiplicacion, 4 = division)");
signo_dos = entrada.nextInt();
switch(signo_uno){
case 1: resultado = num_uno + num_dos;
break;
case 2: resultado = num_uno - num_dos;
break;
case 3: resultado = num_uno * num_dos;
break;
case 4: resultado = num_uno / num_dos;
break;
default: System.out.println("Error");
break;
}
switch(signo_dos){
case 1: resultado1 = resultado + num_tres;
break;
case 2: resultado1 = resultado - num_tres;
break;
case 3: resultado1 = resultado * num_tres;
break;
case 4: resultado1 = resultado / num_tres;
break;
default: System.out.println("Error");
break;
}
System.out.println("El resultado de tu operacion: " + resultado1);
break;
case 4: System.out.println("¿Cual es el primer numero que desea ingresar?");
num_uno = entrada.nextInt();
System.out.println("¿Cual es el segundo numero que desea ingresar?");
num_dos = entrada.nextInt();
System.out.println("¿Cual es el tercer numero que desea ingresar?");
num_tres = entrada.nextInt();
System.out.println("¿Cual es el cuarto numero que desea ingresar?");
num_cuatro = entrada.nextInt();
System.out.println("¿Cual es el primer signo de su operacion que desea hacer?(1 = suma, 2 = resta 3 = multiplicacion, 4 = division)");
signo_uno = entrada.nextInt();
System.out.println("¿Cual es el segundo signo de su operacion que desea hacer?(1 = suma, 2 = resta 3 = multiplicacion, 4 = division)");
signo_dos = entrada.nextInt();
System.out.println("¿Cual es el tercer signo de su operacion que desea hacer?(1 = suma, 2 = resta 3 = multiplicacion, 4 = division)");
signo_tres = entrada.nextInt();
switch(signo_uno){
case 1: resultado = num_uno + num_dos;
break;
case 2: resultado = num_uno - num_dos;
break;
case 3: resultado = num_uno * num_dos;
break;
case 4: resultado = num_uno / num_dos;
break;
default: System.out.println("Error");
break;
}
switch(signo_dos){
case 1: resultado1 = resultado + num_tres;
break;
case 2: resultado1 = resultado - num_tres;
break;
case 3: resultado1 = resultado * num_tres;
break;
case 4: resultado1 = resultado / num_tres;
break;
default: System.out.println("Error");
break;
}
switch(signo_tres){
case 1: resultado2 = resultado1 + num_cuatro;
break;
case 2: resultado2 = resultado1 - num_cuatro;
break;
case 3: resultado2 = resultado1 * num_cuatro;
break;
case 4: resultado2 = resultado1 / num_cuatro;
break;
default: System.out.println("Error");
break;
}
break;
case 5: System.out.println("¿Cual es el primer numero que desea ingresar?");
num_uno = entrada.nextInt();
System.out.println("¿Cual es el segundo numero que desea ingresar?");
num_dos = entrada.nextInt();
System.out.println("¿Cual es el tercer numero que desea ingresar?");
num_tres = entrada.nextInt();
System.out.println("¿Cual es el cuarto numero que desea ingresar?");
num_cuatro = entrada.nextInt();
System.out.println("¿Cual es el quinto numero que desea ingresar?");
num_cinco = entrada.nextInt();
System.out.println("¿Cual es el primer signo de su operacion que desea hacer?(1 = suma, 2 = resta 3 = multiplicacion, 4 = division)");
signo_uno = entrada.nextInt();
System.out.println("¿Cual es el segundo signo de su operacion que desea hacer?(1 = suma, 2 = resta 3 = multiplicacion, 4 = division)");
signo_dos = entrada.nextInt();
System.out.println("¿Cual es el tercer signo de su operacion que desea hacer?(1 = suma, 2 = resta 3 = multiplicacion, 4 = division)");
signo_tres = entrada.nextInt();
System.out.println("¿Cual es el cuarto signo de su operacion que desea hacer?(1 = suma, 2 = resta 3 = multiplicacion, 4 = division)");
signo_cuatro = entrada.nextInt();
switch(signo_uno){
case 1: resultado = num_uno + num_dos;
break;
case 2: resultado = num_uno - num_dos;
break;
case 3: resultado = num_uno * num_dos;
break;
case 4: resultado = num_uno / num_dos;
break;
default: System.out.println("Error");
break;
}
switch(signo_dos){
case 1: resultado1 = resultado + num_tres;
break;
case 2: resultado1 = resultado - num_tres;
break;
case 3: resultado1 = resultado * num_tres;
break;
case 4: resultado1 = resultado / num_tres;
break;
default: System.out.println("Error");
break;
}
switch(signo_tres){
case 1: resultado2 = resultado1 + num_cuatro;
break;
case 2: resultado2 = resultado1 - num_cuatro;
break;
case 3: resultado2 = resultado1 * num_cuatro;
break;
case 4: resultado2 = resultado1 / num_cuatro;
break;
default: System.out.println("Error");
break;
}
switch(signo_cuatro){
case 1: resultado3 = resultado2 + num_cinco;
break;
case 2: resultado3 = resultado2 - num_cinco;
break;
case 3: resultado3 = resultado2 * num_cinco;
break;
case 4: resultado3 = resultado2 / num_cinco;
break;
default: System.out.println("Error");
break;
}
break;
default: System.out.println("Error, numero de digitos incorrecto");
break;
}
} else {
System.out.println("Serie Fibonacci: ");
System.out.println("Cuantos digitos de la serie Fibonacci quiere ");
Fibonacci = entrada.nextInt();
for(i = 0; i < Fibonacci; i++){
if(i < Fibonacci - 1){
System.out.print(a + ",");
c = a + b;
a = b;
b = c;
} else {
System.out.print(a);
}
}
System.out.println("");
i = 0;
b = 1;
a = 0;
c = 0;
}
} else {
System.out.println("Sus datos no coinciden");
}
}
}
Leelo! Quizas te de una idea para un nuevo proyecto para probar tus capacidades!
Bro, no creo que leas, pero estoy haciendo uno parecido, solo que, el programa no pregunta cuantas variables quieres, puedes colocar hasta que quieras dejar de hacer operaciones, lo quise hacer asi pero dar la similitud de una calculadora real, cuando calculas los 2 primeros digitos, si quieres seguir pones un tercero y colocas la operacion que quieres realizar respecto al 2do, eso lo hice posible gracias a un array bidimencional en el cual, los datos que coloques se imprimen en la primera fila y los resultados en la segunda, es una rareza matematica, justo haciendo este comentario me llego otra idea para poder hacerlo quizas lo intente mas adelante.
Respecto al apartado de sucesion de fibonacci, quise, agregarle un poco mas de complejidad y si el usuario desea empezar desde un N_esimo termino en especifico de la sucesion que asi sea, y que tenga x cantidad de terminos que el usuario desee, asi, si el usuario quiere conocer el termino 50 de la sucesion, pueda hacerlo sin tener que imprimir los 49 anteriores (Si, otro dolor de cabeza matematico), llevo en esto dos dias ajjasjak, se me ha complicado mucho la 2da parte de la secuencia.
Dividi el proyecto en 2 partes: La calculadora, la sucesion y el apartado de inicio de sesion y la eleccion de utilidad. Cuando lo termine paso el codigo para el que le interese! Aunque no creo que lo veo alguien jaja
Los anteriores tutos de JFrame cuestan, muy lioso todo, pero poco a poco se va entendiendo mejor la dinámica ^^
Feliz porque llegue aquí :D, gracias
excelente explicación, muy claro. yo loa hacia desde jFrame de netbeans sin entenderlo , pero ahora gracias a vos las cosas me quedan mucho mas claro. saludos
Excelente Ernesto. Mil gracias desde Colombia. Todo muy bien explicado, todo se entiende, TODO FUNCIONA! Mil gracias por todo el esfuerzo y la dedicación. Un abrazo.
Gracias por todo Ernesto ... Pude agregar usuario contraseña con sus respectivas textfield además dos botones uno de aceptar y uno para salir en base a lo que ya hemos visto muchas Gracias Ernesto Dios te bendiga 💕
El mejor maestro de programación de todos
Gracias, me han servido de mucho estas lecciones
También se puede diseñar la interfaz dentro del constructor y llamarlo desde main:
public Formulario(){
setLayout(null);
setBounds(0,0,300,150);
setLocationRelativeTo(null);
setResizable(false);
setVisible(true);
setDefaultCloseOperation(EXIT_ON_CLOSE);
luego armamos los Labels, Botones, etc. Dentro del mismo constructor.
Y luego llamamos desde main al constructor:
public static void main(String args[]){
new Formulario();
Muy buenos videos! me ocurrió (por hacer copy paste) que me olvidé de cambiar la creación del objeto formulario, ya que le había cambiado el nombre a la clase y al constructor (consecuentemente). Entonces cuando lo corría, me creaba una ventana completamente diferente a la esperada... la del ejercicio anterior! me llevó un tiempo darme cuenta del error ya que era lógico, y son los más complicados.
Sinceramente se me hace mucho mas cómodo poner las características de mi ventana en el constructor de la clase que no tiene el método main, me parece mas ordenado. :) Buenísimo el video! Como siempre! jaja
Muchas gracias por excelentes clases he aprendido mucho.
Excelente como siempre... nada más que decir
No soporto los anuncios de netflix pero los veo completos para aportarte lo que puedo Ernesto :’)
Muchas gracias. He aprendido mucho.
se puede poner directamente sin necesidad de asignarlo a un objeto String
setTitle(text.getText());
gracias saludos!
Gracias men
Hoy comencé a ver estos videos, gran trabajo.
Gracias por compartir tu conocimiento.
Comenzaste hoy y ya estas en la 27 waaaaaoooooooooo.
Enseñame.
@@tvBioskoop_show el ya debe estar en curso de android en este momento jaja
yo me demore dos meses para llegar aqui xdxdxdxd
@@cecilianavarrete712 yo solo 1 semana
el julio profe de la programación 👌
como siempre excelente vídeo Ernesto.
Excelentes estas clases!!!!! saludos
Gracias por todo Ernesto
excelente clase
Estoy creando un grupo en whatsapp, para aquellos que tengamos dudas, comentarios, opiniones, queramos aportar y/o impulsar algo.
Si alguien gusta, busquenme. SALUDOS.
YOOO
@@joserogeliovillasenorflore2012 perfecto, búscame al Instagram @akaelcirco ya esta creado el grupo, te esperamos.
sigue vivo ese grupo? medio tarde llegue
excelentes videos,muy bueno el curso,cual seria el elemento para ccambiar el margen hacia arriba?
para bajar mas el formulario gracias
Yo lo hice un poco diferente porque le agregué unos detallitos al código y me sorprendió porque funcionó. De verdad que estoy aprendiendo. Este pana es lo máximo.
import javax.swing.*;
import java.awt.event.*;
public class Usuario extends JFrame implements ActionListener{
private JTextField textoUsuario;
private JButton bAceptar, bCerrar;
private JLabel label1;
public Usuario(){
setLayout(null);
bAceptar = new JButton("Aceptar");
bAceptar.setBounds(10,100,90,30);
add(bAceptar);
bAceptar.addActionListener(this);
bCerrar = new JButton("Cerrar");
bCerrar.setBounds(110,100,90,30);
add(bCerrar);
bCerrar.addActionListener(this);
label1 = new JLabel("Usuario:");
label1.setBounds(10,10,100,30);
add(label1);
textoUsuario = new JTextField();
textoUsuario.setBounds(120,17,150,20);
add(textoUsuario);
}
public void actionPerformed(ActionEvent e){
if(e.getSource() == bAceptar){
String texto = textoUsuario.getText();
setTitle(texto);
textoUsuario.setText("");
}if(e.getSource() == bCerrar){
System.exit(0);
}
}
public static void main(String[] args){
Usuario usuario1 = new Usuario();
usuario1.setBounds(0,0,300,200);
usuario1.setVisible(true);
usuario1.setResizable(false);
usuario1.setLocationRelativeTo(null);
}
}
muy bien las interfaces graficas en java me encanta amigo gracia
¡Gracias!, saludos.
Que tal Ernesto, primero que nada gracias por la info! Soy nuevo en esto y estoy aprendiendo lo necesario para dar el primer paso en programacion! Por otro lado me gustaria preguntarte si puedo obtener un documento donde me diga que hace cada comando, Ej:
getSource = Recupera la info de un espacio de memoria antes creado!
getText =
setVisible = Hace visible la interfas
etc...
Tendras algun documento con toda la info necesaria?
genial la clase!
Buen curso
Excelente tutorial. ¿Hay alguna manera de que el bloc de notas tenga de manera permanente la codificación ANSI?
no se ustedes pero yo siempre ademas de seguir todo lo que hace Ernesto, le agrego siempre un botón de salir al programa, ya que me olvidé del comando para salir desde Cmd jsjsjs
control + c
Yo También se lo hago porque me da flojera usar el ctrl + c
Hola Ernesto, muchísimas gracias por transmitir tus conocimientos, estoy aprendiendo mucho ;)
Tengo tres preguntas y si tienes tiempo me gustaría que me contestaras.
1. En la pantalla CMD no me aparece correctamente la letra "ñ", tildes y otros símbolos. ¿Podrías poner un enlace o decirme como se puede configurar correctamente para solucionarlo?
2. En la interface no me aparece el marco de la ventana creada (parte izquierda, derecha y de abajo). ¿Es porque hay algún error o porque el jdk está más actualizado al que utilizas?
3. En este ejercicio la ventana esta perfecta y funciona correctamente pero no se puede aceptar (dar al botón) utilizando el teclado con el "enter".
Muchas gracias de nuevo y explicas genial.
hola! te respondo la 1. cuando guardás el archivo en el bloc de notas, fijate que hay una opción abajo que dice "codificación" tenes que cambiarlo a ANSI, le das guardar y ya está, te va a tomar los símbolos el cmd.
¿Qué diferencia hay entre guardar el texto de JTextfield en una variable para posteriormente ponerlo en setTitle("variable"); a hacerlo de manera directa con setTitle(textfield1.getText()); ?
poder reutilizar la variable en otras cosas de el codigo.
Para este caso puedes hacerlo asi perfectamente.En programacion se puede ir al mismo sitio por muchos caminos
Hola, le adicione dos botones, salir y limpiar..
import javax.swing.*;
import java.awt.event.*;
public class LoginInterfaz extends JFrame implements ActionListener{
private JButton btnaceptar,btnsalir,btnlimpiar;
private JLabel lbltexto;
private JTextField tfcampo;
public LoginInterfaz(){
setLayout(null);
lbltexto = new JLabel("Usuario:");
lbltexto.setBounds(10,10,100,30);
add(lbltexto);
tfcampo = new JTextField();
tfcampo.setBounds(120,17,180,20);
add(tfcampo);
btnaceptar = new JButton("Aceptar");
btnaceptar.setBounds(10,60,80,30);
add(btnaceptar);
btnaceptar.addActionListener(this);
btnsalir = new JButton("Salir");
btnsalir.setBounds(100,60,80,30);
add(btnsalir);
btnsalir.addActionListener(this);
btnlimpiar = new JButton("Limpiar");
btnlimpiar.setBounds(195,60,80,30);
add(btnlimpiar);
btnlimpiar.addActionListener(this);
}
public void actionPerformed(ActionEvent event){
if (event.getSource()==btnaceptar) {
String texto = tfcampo.getText();
setTitle(texto);
}if (event.getSource()==btnsalir) {
System.exit(0);
}if (event.getSource()==btnlimpiar) {
tfcampo.setText("");
}
}
public static void main(String args[]){
LoginInterfaz lg = new LoginInterfaz();
lg.setBounds(0,0,400,250);
lg.setVisible(true);
lg.setResizable(false);
lg.setLocationRelativeTo(null);
}
}
No dejes de hacer videos , donaciones en camino
Mi interfaz ya ejecutada no luce como la tuya Ernesto. La mia se ve muy pobre jejjeje.
Gracias Ernesto eres muy amable.
Buen Video
SetTitle no lo has dados
Gracias, vuelvas prontos...
jaja lo tenia que comentar
Que buen vídeo !!! Me quedó todo claro, lastima que no me apareció el JTextField en mi pantalla :(
He entendido todo desde que empezamos a trabajar con interfaces exepto una cosa y son las coordenadas. Se que aprendere porque ahora me faltan muchos videos por ver. Pero supongamos que con lo que ya he aprendido intente crear un programa, para saber que coordena darle a lo que quiero dentro de mi interfaz, ¿deberia primero tener en cuenta las dimensiones que le dare a la interfaz verdad? Y mediante esas dimensiones calcular donde quiero que aparezca lo que va dentro de la interfaz?
¡Hola!, así es, al diseñar una interfaz gráfica, lo primero es tomar en cuenta el alto y ancho que tendrá la interfaz, para posteriormente saber en que posición colocaras cada uno de los componentes que estés utilizando, al principio es una tarea un tanto fastidiosa, pero conforme vas tomando experiencia, te ira resultado algo muy sencillo. Saludos.
La Geekipedia De Ernesto Gracias. Saludos igual Ernesto.
mira el primer espacio digamos (0, , , ,) es en el eje X osea horizontalmente, en el segundo espacio(0, 0, , , ) es en el eje Y osea verticalmente, en el tercer espacio (0, 0, 0, ,) es width osea ancho y en el cuarto espacio (0, 0, 0, 0) es height osea alto y hay ya lo puedes manejar las coordenadas a tu gusto quiero mi like :'v.
hola, ernesto tengo una duda veo que a ti en el video te aparece lo que escribes en la esquina izquierda a mi lo que escribo en el cuadro me aparece en el centro de la parte superior, ¿porque ocurre esto?
felicitaciones Ernesto, excelentes videos, tengo una duda, como hiciste para que el titulo te apareciera en la parte izquierda de la ventana y no centrado, gracias
por que no uso el else despues del if ??
simple muchacho porque no estas estableciendo una condicion contraria por lo tanto el else no es necesario
hola ernesto tengo una duda, como se aplicaria cada elemento del video si lo dividieras en modelo, vista y controlador?
Hola Ernesto... porque el Titulo de la ventana se muestra al centro? ya revice el listado varias veces y no encuentro el porque... Gracias de antemano.
Alguien sabe como hacer para que el titulo me salga a la izquierda?, al lado del icono del café. Por defecto me sale centrado.
Hola Ernesto muy buen curso tengo una duda en el tema #29 mi interfas no me aparece ni el usuario ni la etiqueta solo el botón y me aparece en el centro cheque coordenadas pero son las mismas que las tuyas me podrías ayudar saludos
compártenos el código y miramos
❤
Genio
Estuve leyendo el código un buen rato y el único error era que puse punto en lugar de coms en el botón,un saludo y no sé rindan nunca
Una duda Porque en el video anterior al utilizar el método .getSource no se incluyeron los paréntesis y en este video si?
si se incluyeron
maestro
porque no me deja usar .setBounds?
Y si te digo que en la Universidad JAMAS me enseñaron esto ! unicamente se preocuparon por enseñarme lo que es en si la POO pero nunca recibi una clase que se tratase de interfaces graficas ! igual se que todo esto se simplifica con los asistentes que existen en los IDES pero coño pase 5 casi 6 años de mi universidad y jamas me enseñaron esto !
¡Hola!, lamentablemente las universidades se apegan a los programas que les establecen.
No obstante, es un gusto saber que el contenido ha resultado de tu agrado. Saludos.
Hola, me sale el siguiente error:
Exception in thread "main" java.lang.NullPointerException
at Formulario.(Formulario.java:20)
at Formulario.main(Formulario.java:32)
Dato curioso: Pedimos informacion al usuario sin utilizar el scanner no?
Pues sí pero para eso esa el GUI
Hola Ernesto quiero consultar si o si siempre que estemos creando formularios con lo heredado de la carpeta JFrame debemos llamar a nuestra clase Formulario?
la clase se puede llamar como tu quieras, pero recuerda usar el miso nombre
siempre que invoques la clase
@@alejandroosorio2248 Barbaro gracias
Yo no me acuerdo de en qué vídeo vimos el setTitle :C
Yo tampoco jaja
Flasheo jajaja
HOLA ERNESTO NO ME APARECE LOS BOTONES NI EL JLABEL ?? POR QUE ? :(
aqui mi codigo con una interfas donde le puse dos etiquetas y la segunda es interactiva junto con el boton aceptar por favor si desean aportar algun comentario acerca de comomejorarla se agradece =)
textfield1 = new JTextField();
textfield1.setBounds(120,17,150,20);
add(textfield1);
boton1 = new JButton("aceptar");
boton1.setBounds(10,80,100,30);
add(boton1);
boton1.addActionListener(this);
boton2 = new JButton("cerrar");
boton2.setBounds(150,80,100,30);
add(boton2);
boton2.addActionListener(this);
setTitle("experimentodeinterfas");
}
public void actionPerformed(ActionEvent e){
if(e.getSource() == boton1){
String texto = textfield1.getText();
label2.setText(texto);
}
if(e.getSource() == boton2){
System.exit(0);
}
}
public static void main(String args[]){
Formulario formulario1 = new Formulario();
formulario1.setBounds(0,0,300,150);
formulario1.setVisible(true);
formulario1.setResizable(false);
formulario1.setLocationRelativeTo(null);
}
}
de verdad es necesario utilizar la estructura condicional si solo hay un boton?;
yo lo probe y me funciono si el.
¡Hola!, básicamente lo que intento al utilizar las estructuras condicionales, es fomentar la validación de los eventos y controlar de manera anticipada las acciones de los componentes. Eso es lo que yo recomiendo, sin embargo, la lógica de cada programador es diferente y por supuesto que existen distintas maneras de lograr el mismo resultado. Saludos.
OLLE AMIGO TU SABES PORQUE ME SALE ERROR EN ESTA PARTE DEL CODIGO. NO ENTIENDO PORQUE SI ESTA BIEN ESCRITO AQUI ES DONDE ME SALE EL ERROR
public class Registro extends implemets ActionListener{
Dylan Lore es ... extends JFrame ...
Alan OP es cierto muchas gracias
dE de nada 😀
Alguien sabe porque me salta error en todos los symbolo, como si no los reconociera
Para el evento al presionar la tecla enter, como lo llamo?
"
"
Alguien me puede ayudar me sale este error:
Formulario is not abstract and does not override abstract method actionPerformed(ActionEvent) in ActionListener
public class Formulario extends JFrame implements ActionListener{
^
1 error
Jesus Gabriel Fijate si el método de ActionPerformed está bien escrito.
No me jala su código en mi compu :(
cuanto falta para hacer aplicaciones para móviles
Que tal, publicare el curso de Android una vez que concluya el curso de JAVA.
Saludos.
La Geekipedia De Ernesto" ok y gracias ,me puedes decir en tu opinión cuanto capítulos crea que se va a llevar el curso de java "
Hola Ernesto, te felicito por los cursos, todo muy clro y facil de entender, estoy intentando compilar mi código pero me arroja este error:
javac: invalid flag: VentanaUsuario,java
Usage: javac
use -help for a list of possible options
por favor ayúdame porque lo he revisado y comparado con el tuyo y otros y no logro ver el error.
Mil Gracias de antemano.
Dender
Venezuela
PD: te anexo el código:
import javax.swing.*;
import java.awt.event.*;
public class VentanaUsuario extends JFrame implements ActionListener{
private JButton boton1, boton2;
private JLabel label1;
private JTextField textoin;
public VentanaUsuario(){
setLayout(null);
boton1 = new JButton("ACEPTAR");
boton1.setBounds(10,80,100,30);
add(boton1);
boton1.addActionListener(this);
boton2 = new JButton("SALIR");
boton2.setBounds(110,80,100,30);
add(boton2);
boton2.addActionListener(this);
label1 = new JLabel("USUARIO:");
label1.setBounds(10,10,100,30);
add(label1);
textoin = new JTextField();
textoin.setBounds(120,17,150,20);
add(textoin);
}
public void actionPerformed(ActionEvent seleccion){
if(seleccion.getSource() == boton1){
String texto = textoin.getText();
setTitle(texto);
}
if(seleccion.getSource() == boton2){
System.exit(0);
}
}
public static void main(String agrs[]){
VentanaUsuario ventana1 = new VentanaUsuario();
ventana1.setBounds(0,0,300,150);
ventana1.setVisible(true);
ventana1.setResizable(false);
ventana1.setLocationRelativeTo(null);
}
}
no tienes instalado java
¿Cómo hago para en vez de obtener texto y meterlo a una String con .getText, poder obtener ese texto y meterlo en un Int o en un Double?, por favor responde :(
Solo me puse a investigar un poco y conseguí una manera:
(variable)(nombre)=Double.parseDouble(String);
double BsS = Double.parseDouble(Field);
Así que guardé el texto de JTextField en un String y lo transformé de String a Double.
Luego tenía un problema porque ese número lo quería dividir entre 100.000,00. Pero cuando la persona ingresaba 10 millones o más (10.000.000) salía 1.0E69 o algo así. Entonces tuve que investigar y conseguí una librería llamada
import java.math.BigDecimal;
Que era parecida a la Double pero con más espacio, según entendí el espacio es infinito, hasta donde pueda la pc antes de quedarse sin memoria o algo así :) Luego solo declaraba una variable llamada BigDecimal, con esta sintaxis:
(variable) (nombre) = (declaración) (Valor)
BigDecimal multiplicacion = new BigDecimal(BsS * 100000);
Como ya había pasado el texto al Double de nombre BsS, y no sabía como pasar texto de String a BigDecimal, decidí utilizar el Double y hacer que cumpla la función que le pedí, pero almacenando todo en BigDecimal para que no haya problema.
No es mucho pero estoy orgulloso de haber resuelto el problema por mí mismo, lo peor es que Justo me quedé sin internet cuando conseguí que import java.math.BigDecimal; era una librería, así que lo demás lo tuve que inventar. Gracias Ernesto que me ayudó a comprender como funciona java y mejorar mi lógica de programación
Por qué no hace falta inicializar la variable texto?
lo hizo todo junto bro
Aquí en 2021 a los 15 años, tratando de ser autodidactico, ya que la pandemia no coopera
Hola ernesto! tengo un problema. primero te quiero felicitar y agradecer por compartir tu conocimiento . al agregar el sig texto a mi clase me tira error "implements ActionListener" y el programa obviamente no se ejecuta bien. te adjunto el nombre del error que me muestra eclipce: " Multiple markers at this line
- The serializable class Formularios does not declare a static final serialVersionUID field of type long
- The type Formularios must implement the inherited abstract method
ActionListener.actionPerformed(ActionEvent)" espero tu respuesta gracias!
A mí me salió un error parecido, y el problema fue que es escribí mal el nombre del método actionPerformed.
ese error te lo lanza por que no estas invocando la interfaz o no estas implementando todos sus metodos es una de las reglas de las interfaces cuando invoques una debes implementar todos los metodos que esta contenga o si no tu clase debe ser Abstracta pero ese es otro tema !°
les recomiendo usar visual estudio code que les guarda el archivo .java y ademas tiene una consola de previzualizaciones
El problema es que Ernesto dijo que usáramos bloc de notas para aprender más
@@Un-randowm si se, mi yo de 2020 les recomendaba eso porque asi se hacia mas rapido el trabajo. de todas formas cada uno elije como trabajar.
Con su boton de cierre.
import javax.swing.*;
import java.awt.event.*;
public class Formulario extends JFrame implements ActionListener{
private JTextField textfield_1;
private JLabel label_1;
private JButton boton_1, boton_2;
public Formulario(){
setLayout(null);
label_1 = new JLabel("Usuario");
label_1.setBounds(10,10,100,30);
add(label_1);
textfield_1 = new JTextField();
textfield_1.setBounds(120,17,150,20);
add(textfield_1);
boton_1 = new JButton("Aceptar");
boton_1.setBounds(10,80,100,30);
add(boton_1);
boton_1.addActionListener(this);
boton_2 = new JButton("Cerrar");
boton_2.setBounds(170,80,100,30);
add(boton_2);
boton_2.addActionListener(this);
}
public void actionPerformed(ActionEvent e){
if(e.getSource() == boton_1){
String texto = textfield_1.getText();
setTitle(texto);
} else if(e.getSource() == boton_2){
System.exit(0);
}
}
public static void main(String args[]){
Formulario formulario_1 = new Formulario();
formulario_1.setBounds(0,0,300,150);
formulario_1.setResizable(false);
formulario_1.setVisible(true);
formulario_1.setLocationRelativeTo(null);
}
}
te falto un pequeño detalle no es la gran cosa pero te va gustar que tu ventana tenga un titulo
Formulario formulario_1 = new Formulario();
formulario_1.setTitle("Bienvenido");
formulario_1.setBounds(0,0,300,150);
formulario_1.setResizable(false);
formulario_1.setVisible(true);
formulario_1.setLocationRelativeTo(null);
Creo que no es necesario poner else if , ya que estamos hablando de eventos independientes. Pero muy bueno, yo tambien estoy aprendiendo mucho.
El código me funciona cuando lo ejecuto desde netbeans.
Cuando trato de compilarlo desde cmd o vscode me da error . . .
vs code: "The method getText() is undefined for the type JTextField"
cmd : - cannot find symbol
- method getText();
- variable textfield1 of type JTextField
Hola Omar, me pasa lo mismo, pudiste solucionarlo?
@@ivanastorga1641 No, al final lo deje así.
por que me dice que mi clase no es abstracta?:(
like
like si llegaste hasta aqui
Por favor alguien que me explique por que me da un error en la clase si pongo el nombre bien .
depronto no estas en la carpeta en la cual esta el archivo
balla ! se me hace muy dificil todo lo relativo a intefaz grafica. aun no eh podido comprender nada.
es cuestión de repetir, tampoco lo entendí a la primera
Claro a la primera nadie
no me cambia el titulo de la interfaz :S, porque?
import javax.swing.*;
import java.awt.event.*;
public class Formulario extends JFrame implements ActionListener{
public static void main(String args[]){
Formulario formulario1 = new Formulario();
formulario1.setTitle("Bienvenido");
formulario1.setBounds(0,0,300,150);
formulario1.setVisible(true);
formulario1.setResizable(false);
formulario1.setLocationRelativeTo(null);
}
private JTextField textfield1;
private JLabel label1;
private JButton aceptar;
public Formulario(){
setLayout(null);
textfield1 = new JTextField();
textfield1.setBounds(120,15,150,30);
add(textfield1);
label1 = new JLabel("Usuario:");
label1.setBounds(15,15,100,30);
add(label1);
aceptar = new JButton("Aceptar");
aceptar.setBounds(15,50,100,30);
add(aceptar);
}
public void actionPerformed(ActionEvent e){
if(e.getSource() == aceptar){
String title = textfield1.getText();
setTitle(title);
}
}
}
Te falto agregar esta linea dentro del constructor:
aceptar.addActionListener(this);
Saludos!
Adjunto mi código, con boton exit y diferente diseño:
import java.awt.event.*;
import javax.swing.*;
public class Form extends JFrame implements ActionListener{
private JLabel label,title;
private JTextField user;
private JButton exit,accept;
public Form(){
setLayout(null);
title = new JLabel("Log In");
title.setBounds(125,10,50,20);
add(title);
label = new JLabel("User:");
label.setBounds(25,37,100,30);
add(label);
exit = new JButton("Exit");
exit.setBounds(150,80,100,30);
exit.addActionListener(this);
add(exit);
accept = new JButton("Accept");
accept.setBounds(25,80,100,30);
accept.addActionListener(this);
add(accept);
user = new JTextField();
user.setBounds(100,40,150,25);
add(user);
}
public void actionPerformed(ActionEvent click){
if(click.getSource() == exit){
System.exit(0);
}else if(click.getSource() == accept){
setTitle(user.getText());
}
}
public static void main(String args[]){
Form one = new Form();
one.setBounds(0,0,290,175);
one.setResizable(false);
one.setLocationRelativeTo(null);
one.setVisible(true);
}
}