Curso Java. Aplicaciones gráficas Swing IV. Escribiendo en el Frame. Vídeo 58

  Рет қаралды 138,364

pildorasinformaticas

pildorasinformaticas

Күн бұрын

Пікірлер: 317
@pildorasinformaticas
@pildorasinformaticas 3 жыл бұрын
✅✅ ✅ ✅ ✅ Todos mis cursos gratuitos 👉 www.pildorasinformaticas.es ✅✅ ✅ ✅ ✅ 🚀 ¿Quieres ejercicios? ¿Quieres más temario? 👉 www.pildorasinformaticas.es/course/java-tutorizado/🚀 🚀 ¿Quieres que te resuelva las dudas de Java? 👉 www.pildorasinformaticas.es/course/java-tutorizado/ 🚀 💥💥💥 Siempre seguiré subiendo cursos gratuitos por aquí. Gracias a todos por seguirme. 💥💥💥
@jlsdesarrolloweb2014
@jlsdesarrolloweb2014 5 жыл бұрын
Que importante para uno que esta aprendiendo, es leer los comentarios, excelente profe
@joleacud91
@joleacud91 3 жыл бұрын
Para los que apenas no animamos a querer programar y van siguiendo estos maravillosos y didácticos videos, puede que no les funcione este tutorial ya que tienen que cambiar paintComponent por paint en la clase Lamina y asi les va a funcionar, saludos y ánimos para seguir aprendiendo.
@JOTAGEPEME
@JOTAGEPEME 3 жыл бұрын
Por que ? me estaba volviendo loco
@cristianvega9393c
@cristianvega9393c 8 ай бұрын
En realidad lo que esta haciendo es sobreescribir, si en tu codigo no funciona esq quizas el metodo paintComponent que hereda, no esta igual declarado, por ejemplo en mi caso estaba declarado con protected, por lo tanto al sobreescribirlo tenia que utilizar protected en lugar de public.
@oscarmanuelguarinfigueroa1808
@oscarmanuelguarinfigueroa1808 Жыл бұрын
Excelente presentación sobre las bases en cuanto a interfaces,,,para los que manejamos el IDE de NetBeans, es importante aclarar que la mejor opción es declarar una función de inicialización en el Constructor (initComponent()) y allí establecer los parámetros de configuración de los objetos que van a componer el Panel y las características del Frame....
@judaperez681
@judaperez681 3 жыл бұрын
Me gusta que esto sí sea un curso. Quiero decir, te enseña a usar (y como funciona) swing y no un tutorial (haciendose pasar por curso) que te dice los pasos para hacer una ventana genérica sin explicarte nada.
@davidflores4932
@davidflores4932 9 жыл бұрын
Muy buen video, solo un consejo, al estar programando en eclipse el asistente se puede volver a activar presionando ctrl + space, eso tambien sirve para auto completar metodos, nombres de variable entre otras cosas, y tambien otro comando util seria ctrl + shift + o, este importa las clases que vas utilizando, o tambien alt + shift + r, este sirve para renombrar una variable o una instancia de objeto, de forma que no tienes que ir buscando por la clase donde aparece ese nombre, y hay aun más que son bastante utiles
@pildorasinformaticas
@pildorasinformaticas 9 жыл бұрын
+Brayan David Flores Perez Hola !! Gracias por el aporte. Sí, es cierto. Eclipse y demás entornos de desarrollo cuentan con cientos de atajos del teclado muy útiles. Para el que trabaja con Eclipse a diario memorizarlo es cuestión de poco tiempo. Para los que trabajamos con más de 20 IDEs y diversas tecnologías, la cosa se complica. Lo intentaremos !! Un saludo!!
@naweel17
@naweel17 3 жыл бұрын
Excelentes clases, profe. Estoy aprendiendo muchísimo. Saludos desde Argentina. Gracias!
@vitto8112
@vitto8112 8 жыл бұрын
Que tal Pildoras. Quiero decir que para mi fuiste muy claro con el tema dimensiones y pixeles. Muy detallado como toda la info que das. Saludos desde Uruguay.
@pildorasinformaticas
@pildorasinformaticas 8 жыл бұрын
Gracias por tu comentario. Me alegro de que te gustara el vídeo. Un saludo!!
@mariomadera91
@mariomadera91 10 жыл бұрын
Gracias! Tus cursos son los mejores que hay! Saludo desde Uruguay
@pildorasinformaticas
@pildorasinformaticas 10 жыл бұрын
Mario Madera Gracias !! Un saludo
@miguelangelvasquezgarcia8235
@miguelangelvasquezgarcia8235 2 жыл бұрын
Muchas gracias profesor por estos videos, yo retomando el curso y reafirmando los conocimientos, muchas gracias por compartir estos videos
@forsabarça
@forsabarça 4 жыл бұрын
Yo escribo el constructor en la clase MarcoConTexto , instancio dicha clase y a partir del objeto miMarco invoco a los métodos con la ayuda del asistente. De ésta forma, no tengo que memorzar los argumentos de los métodos. Felicitarte por este y todos los cursos y agradecerte la gran ayuda !!! No todos los superhéroes llevan capa !! Un fuerte abrazo !
@jolumarcan
@jolumarcan 8 жыл бұрын
Hola Juan, antes que nada gracias por ofrecer este fantástico curso de java de manera gratuita a todo aquel interesado por la programación, como yo. Mi pregunta es, en este video sobreescribes el método paintComponent para que dibuje un texto sobre la lámina, pero luego cuando creas la lamina en el constructor de la clase MarcoConTexto no veo que se utilice la siguiente instrucción miLamina.paintComponent(g), sino que directamente la añades con el método add(miLamina) y al ejecutar la aplicación esta funciona, y no entiendo porqué, ya que el método paintComponent no ha sido llamado explícitamente en ningún sitio. ¿Podrías explicarme por qué funciona la aplicación sin invocar a este método?
@pildorasinformaticas
@pildorasinformaticas 8 жыл бұрын
+Jose Luis Martín Cantón Hola !! Gracias por el comentario. esta es una pregunta que me habéis hecho mucho y con razón, porque es un matiz que se me olvidó explicar en el vídeo. El método paintComponent tiene la particularidad de que es invocado automáticamente (al contrario que el resto de métodos vistos hasta ahora) por el contenedor, en este caso la lámina. Cada vez que se realiza alguna operación con la lámina tal como cargar, maximizar, minimizar, redimensionar etc, el método paintComponent es invocado. por el contenedor (lámina). Un saludo
@adridiaz9207
@adridiaz9207 8 жыл бұрын
Hola Juan, tenía la misma duda y me ha quedado resuelta, pero te quería preguntar, ¿hay alguna forma de saber cuando un método tiene esta particularidad de ser invocado automáticamente por el contenedor? No he visto nada en la API que refleje el comportamiento atípico de este método. Gracias de antemano, ¡es un curso de 10!
@pildorasinformaticas
@pildorasinformaticas 8 жыл бұрын
No, no hay nada que lo indique excepto leerte la descripción del método que nos da la API. Creo que leyendo la descripción e puede deducir este comportamiento, pero estaría bien que lo indicaran de una manera más clara. Un saludo!!
@marcoslasaye5709
@marcoslasaye5709 3 жыл бұрын
Yo,tenia la misma duda y despues de que respondiese el profe Juan, me quede igual....dichoso metodo xd. Yo tambien tenia que anadir otra duda que tiene que ver con esta; y es que al parametro del metodo paintcomponent, no se le ha asociado ningun objeto tipo Grafics ni se ha instanciado la clase Grafics, y aun asi, el metodo hace su trabajo. Me he quedado flipando en plan: WHAAAAAAT !! Estoy ssuuuuuuper estancado aqui.
@gbrl10
@gbrl10 3 жыл бұрын
@@marcoslasaye5709yo igual me confundí con eso, de dónde sale el objeto "Graphics g"? sigues estancado?
@giorgiechannel4091
@giorgiechannel4091 6 жыл бұрын
Me emociono cada vez que termino un videaso de estos como si estuviera mirando una serie de Netflix. Muchas Gracias
@pildorasinformaticas
@pildorasinformaticas 6 жыл бұрын
Gracias a ti por seguir mis vídeos. Un saludo!
@manuelquinteros8936
@manuelquinteros8936 8 жыл бұрын
Volví profe...! A aprender lo mas que pueda.
@pildorasinformaticas
@pildorasinformaticas 8 жыл бұрын
+Manuel Quinteros Bienvenido de nuevo. Ánimo!! Un saludo
@jnarvaezg
@jnarvaezg 9 жыл бұрын
revisando los comentarios a alguien no le mostraba el triangulo verde cuando redefinia paintComponent a mi tampoco y me di cuenta que me faltaba la letra t y ese era el problema...gracias por el curso muy bueno
@nagatodhkt
@nagatodhkt 8 жыл бұрын
+Jorge Narvaez A mí me faltaba la n xD, pero gracias por la observación
@eduardokallek9536
@eduardokallek9536 6 жыл бұрын
la p es minuscula
@bartclavero4548
@bartclavero4548 9 жыл бұрын
Vier tu video a pantalla completa con el Netbeans superpuesto hasta la mitad de la pantalla, escribiendo el código justo después de ti, ver como le das al play, hacer lo propio yo con shift+F6, que aparezca tu ventana y a continuación la mía apareciendo exactamente en la misma posición que la tuya superponiendola... eso...eso no tiene precio. Gracias por el curso.
@pildorasinformaticas
@pildorasinformaticas 9 жыл бұрын
Bart Clavero Ibarra :))) Gracias por seguir mis vídeos. Un saludo
@chuchotech5513
@chuchotech5513 4 жыл бұрын
Desde Canada, muy apreciado este curso. Muy detallado, no deja nada oculto. Agradeceria si tiene algun curso similar de sql o un curso completo de java apliocado a un proyecto real de web site
@lilianaguarin3209
@lilianaguarin3209 2 жыл бұрын
Hola! un saludo desde Colombia. Excelente tu curso Juan, mil gracias! super buenas las explicaciones en cada video.
@pedronavarro42729
@pedronavarro42729 8 жыл бұрын
excelente profesor pues con animos de seguir aprendiendo mas con sus excelente videos saludos..
@marinjrglobalhitss
@marinjrglobalhitss 6 жыл бұрын
Que buen curso te has aventado hasta ahora; he estado devorando video tras video; se que has recomendado NO hacer esto pero me han parecido muy fáciles de entender (tengo fundamentos de programación y me quedé en PHP; ya no he aprendido nada más hasta el día de hoy). Algunas veces hay que pausar porque voy haciendo los ejercicios al mismo tiempo, y me devoro varios videos al día. ¡Pero vaya que has hecho un excelente material!
@tumamamemiiima
@tumamamemiiima 3 жыл бұрын
a todo el que recien ahora este viendo el curso y tenga problemas con que no le aparezca la lamina ni el texto, asegurense de que al crear la clase lo hicieron con el metodo main porque ese fue mi error, señor juan si anda por estos videos a dia de hoy gracias por tanto perdon por tan poco
@antoniovalderrama7080
@antoniovalderrama7080 10 жыл бұрын
Me atrevo a decir que en la gran mayoría de las Universidades no se sustenta las APIS, como sustentación de tal explicación que estás realizando. Se habla de las APIS, pero no se muestran; quedan abstractas. Muchas gracias Juan ya que cada vez entiendo más lo que he visto en la Universidad. Seguimos aprendiendo y experimentando. avalderrama
@pildorasinformaticas
@pildorasinformaticas 10 жыл бұрын
Antonio Valderrama Gracias por el comentario. Me alegro de que te gusten los vídeos. Un saludo
@jorgeb2789
@jorgeb2789 7 жыл бұрын
Hola, bueno quería comentarte una teoría que tengo a ver si me la puedes confirmar, y es la siguiente: A la hora de programar, más en concreto con el uso del metodo setVisible(true), este no debería estar en el último lugar? ya que supongo (no estoy seguro) que si lo ponemos al principio del todo, se iran haciendo visibles los elementos de uno en uno, me explico, a pesar de que el programa corra en milisegundos, primero se establecera el panel a secas, luego el título, luego el icono, luego los botones, (esto depende de como lo hayamos estructurado a la hora de programar). Por ello creo que es mejor en este caso primero crear nuestro panel y luego cuanto todos los elementos esten ya establecidos, hacerlo visible.
@pildorasinformaticas
@pildorasinformaticas 7 жыл бұрын
Sí, es correcto lo que dices. El método setVisible(true) debe estar siempre en último lugar porque si agregas elementos después estarías obligado a refrescar pantalla para que estos aparezcan. De hecho, en uno de los vídeos yo cometí el error de no colocarlo al final y me empezaron a llegar cientos de mails diciéndome que no se mostraban los elementos del JFrame. Si el que os habla comete un error, vais todos detrás con el mismo error. Un saludo!!
@jorgebalagueraespinosa5936
@jorgebalagueraespinosa5936 2 жыл бұрын
Gracias, a mi no me funcionaba porque lo tenía al inicio del todo, pero de todos maneras muchas gracias para todos lo que comparten sus conocimientos. Saludos desde Bucaramanga - Colombia
@FunkysProduction
@FunkysProduction 3 жыл бұрын
Buenas, han pasado 5 años desde estos videos. He empezado a seguirlos para aprender swing en netbeans y mi pregunta es si son recomendables o no. Esta pregunta la hago para saber si esta es la manera mas optima ya que en netbeans, al crear el JFrame, este tiene una interfaz de diseño que crea diferentes elementos y todo esto lo hace dentro de un metodo llamado initComponents(), el cual no se puede editar directamente a mano, que es llamado dentro del constructor y el cual, si hacemos todo como en este video, impide que se vea la String en el frame.
@PANCHO7532
@PANCHO7532 5 жыл бұрын
Hola, tengo una duda al respecto con este video en particular Bueno, por lo que entendí el paintComponent recibe un elemento de tipo "Graphics", lo que no entiendo es, de donde viene ese elemento para que lo procese esa función? Como por ejemplo, un metodo void con un String iria asi: public void algo(String contenido) { int longitud = contenido.length; } En esa funcion yo veo que le tengo que ingresar un String (el cual puede ser cualquier cosa relacionado a ese tipo de objeto como un "hola" Pero en cambio con paintComponent... public void paintComponent(Graphics objeto) { objeto.drawString("etc", 100, 100); } Ahi yo veo que procesa un Graphics pero yo no veo algun momento en el codigo donde se ingresa este Graphics al momento de instanciar la clase (y si lo hace, tampoco no tengo una remota idea de que es lo que pasa exactamante como Graphics hacia "objeto" en este caso, para que paintComponent lo procese) En resumen, de donde se genera ese objeto "Graphics" para que luego se procese hacia paintComponent? o eso lo veremos mas tarde en algun video futuro de este curso? Ya que en el codigo no hemos generado ningun objeto de tipo Graphics para pasarlo a paintComponent segun entendi... o si (?
@giomarsalazar7547
@giomarsalazar7547 6 жыл бұрын
Gracias Profesor Juan por esta clase Agradecido. Cuando tenga un conocimiento adecuado.. Diseñare y Realizare una comisc de una píldora Informática Animada que camine y hable para los cursos de niños y chavales. El cual Profesor me imagino que estara pensando en realizar curso para Niños o Chavales.
@pildorasinformaticas
@pildorasinformaticas 6 жыл бұрын
:)) qué bueno!
@Terzaghi12
@Terzaghi12 4 жыл бұрын
Algo importante es que la coordenada "Y" de drawString en el paintcomponet hace referencia a la parte inferior del texto en este caso. Osea imaginen al texto con bordes al rededor, el borde inferior (la base del texto) es la coordenada Y, y la X es el inicio del texto
@zamoray123
@zamoray123 9 жыл бұрын
Excelente gracias Juan
@arturocortes5352
@arturocortes5352 6 жыл бұрын
gracias capo, me estas ayudando a entender bien todo este cuento de las interfaces gráficas
@alejandrorivera1538
@alejandrorivera1538 6 жыл бұрын
gracias, muy claro todo, enserio eres bueno en esto xD
@paulcano3840
@paulcano3840 9 жыл бұрын
Hola Juan ! Mira, he vuelto a ver el vídeo 58 del curso de Java para entender mejor cuando llamas a (super.paintComponent(g);) dices que lo haces para que siga haciendo el trabajo por el que le programaron, por que sino, cuando más adelante pintemos, agreguemos letras, etc. nos hará falta. He seguido con los vídeos hasta el (APLICACIONES GRÁFICAS. SWING X. INCLUYENDO IMAGENES II ) y sigo sin entenderlo bien. Los programas hacen exactamente lo mismo con esa instrucción que sin ella. Supongo que tendré que leerme mejor la descripción del método en la API ¿no? jeje. Muchas gracias por tu dedicación. ¡ Un abrazo !
@pildorasinformaticas
@pildorasinformaticas 9 жыл бұрын
Paul Cano Hola !! Puede que en algunos programas sencillos como los nuestros, lleguen a funcionar sin llamar al método paintComponente de la clase padre, pero es más que conveniente llamar a paintComponent para asegurarnos de que este método realiza correctamente su trabajo y dibuje los componentes en la lámina de forma correcta. Efectivamente una buena idea es leer cuidadosamente la API y si ello no te aclara lo suficiente, introduce en google el nombre del método y filtra los resultados de búsqueda a "español" (poco recomendable. Los mejores resultados suelen estar en inglés). Un saludo
@paulcano3840
@paulcano3840 9 жыл бұрын
No tengo problemas con el inglés jejeje. Ok, te haré caso :-)
@jazminroblesrodarte76
@jazminroblesrodarte76 9 жыл бұрын
Excelente explicas super bien mis felicitaciones.. una pregunta no tienes tutoriales de como conectar cada componente a una base de datos??
@pildorasinformaticas
@pildorasinformaticas 9 жыл бұрын
Jazmin Robles Rodarte Hola !! Gracias por el comentario. De momento no, pero este curso está en desarrollo y aún no hemos llegado a la parte de JDBC donde se explicará precisamente esto. Un saludo
@jmansanetperez
@jmansanetperez 6 жыл бұрын
Gracias Juan.
@moacdoce2444
@moacdoce2444 5 жыл бұрын
Hola, me ha surgido una duda, en donde se pone: Lamina milamina= new Lamina(); estamos utilizando el constructor por defecto de la clase Lamina? Gracias.
@pildorasinformaticas
@pildorasinformaticas 5 жыл бұрын
Sí, al no tener parámetros se trataría del constructor por defecto. Un saludo!
@moacdoce2444
@moacdoce2444 5 жыл бұрын
Gracias este curso esta de 1000++
@beepst
@beepst 6 жыл бұрын
El ejemplo de la mesa es excelente.
@alehop1223
@alehop1223 7 жыл бұрын
Muchas gracias por los vídeos, hasta ahora creía que lo estaba entendiendo bastante pero aquí me ha surgido una duda que me ha descolocado un poco. De dónde sale el objeto de tipo Graphics que le damos por parámetro a paintComponent()? Hasta ahora cuando un método nos pedía un objeto por parámetros teníamos que crear una clase de ese tipo e instanciarla y pasárselo por parámetros, pero en este caso no veo el origen del Graphics g. Creí que tal vez era un campo del alguna superclase pero no lo encuentro, y repasando el vídeo 3 o 4 veces sigue sin quedarme claro. Un saludo!
@brandonfernandezmejia1430
@brandonfernandezmejia1430 4 жыл бұрын
Yo también tengo esa duda
@JheisonRodriguez
@JheisonRodriguez 9 жыл бұрын
Hola profe que pena la molestia, cuando corro el codigo no me aparece el texto, esta todo igual segun el video. Gracias package paquete_swing; import javax.swing.*; import java.awt.*; public class graficos { public static void main(String[] args) { MarcoConTexto primer_texto = new MarcoConTexto(); primer_texto.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } } class MarcoConTexto extends JFrame { public MarcoConTexto (){ setVisible(true); //setBounds(400, 200, 600, 450); setSize(600,450); setLocation(400, 200); setTitle("Primer Texto"); lamina milamina= new lamina(); add(milamina); } } class lamina extends JPanel{ public void paintComponents(Graphics g) { super.paintComponents(g); g.drawString("Mi primer texto en una lamina de java",100 ,100 ); } }
@pildorasinformaticas
@pildorasinformaticas 9 жыл бұрын
Jeison Rodriguez Hola !! igual igual no está.... el método es paintComponent en singular. Sin la s final. Quita la s del método y también de la llamada a super.paintComponentS. un saludo
@jhonfredyrincon-pelayo2968
@jhonfredyrincon-pelayo2968 7 жыл бұрын
Buen día. Me sucedió que escribí paintComponents, y no funciono casi media hora hasta que vi nuevamente el vídeo, e identifique que va sin la S paintComponent. Muy buen curso gracias.
@teldatamcy5656
@teldatamcy5656 8 ай бұрын
Gracias, excelente!!! Chévere 🍌 2024!!!
@alejandrogallardo244
@alejandrogallardo244 7 жыл бұрын
Podría decirse que estás aplicando el concepto de método abstracto cuando aplicas "super" y sobrescribes el metodo? Excelente video
@kjim221
@kjim221 8 жыл бұрын
Una duda, intenté personalizar con Toolkit de esta forma: class marcoTexto extends JFrame{ public marcoTexto(){ setVisible(true); setSize(600, 450); setLocation(400, 200); setTitle("con láminas"); /* Toolkit pantalla = Toolkit.getDefaultToolkit(); Image icono = pantalla.getImage("src/imagenes/icono.gif"); setIconImage(icono); */ Lamina milamina = new Lamina(); //instanciar la lámina //añadimos la lámina add(milamina); } } Si no comento las líneas de Toolkit, el texto de prueba no sale, no entiendo el por qué.
@gustavoandrade178
@gustavoandrade178 7 жыл бұрын
Hola antes que nada, te agradezcp por compartir tu inmenso conocimiento. Y quisiera saber que pasa si agregamos objetos directamente el en marco sin utilizar una lamina???
@pildorasinformaticas
@pildorasinformaticas 7 жыл бұрын
Que no estás siguiendo la forma correcta de crear una interfaz gráfica. Es como pintar un cuadro directamente en la madera sin agregar un lienzo y pintar en él. Si la interfaz gráfica es sencilla no pasa nada en especial. Si la interfaz gráfica es complicada y necesitas por ejemplo solapamientos (como las capas de photoshop) entonces no te servirá pintar sobre el Frame. Un saludo!!
@rafaelcesar6656
@rafaelcesar6656 9 жыл бұрын
mais uma que eu não sabia, eu só usava as clasesd fácil para criar textos, como JLabel, essas clases são novas para mim, tó gostando de ver ... partiu nova aula
@alejandrocastillo9260
@alejandrocastillo9260 10 жыл бұрын
Buenos días Juan, una consulta rápida. En tu ejemplo, como el método paintComponent() pertenece a una clase inmediatamente superior a JPanel que es JComponent utilizas super. ¿Pero que harías si perteneciera a un clase más de un nivel superior en la jerarquía, por ejemplo Container? Gracias
@pildorasinformaticas
@pildorasinformaticas 10 жыл бұрын
Alejandro Castillo Hola. La instrucción super no llama al método inmediatamente superior en la jerarquía de la herencia sino que llama al método de la clase de la que hereda. En el vídeo el método paintComponent(Graphics g) da la casualidad de que está declarado en la clase inmediatamente superior en la jerarquía de la herencia. Pero pongamos otro ejemplo: el método paintComponents(Graphics g) (ojo con S paintComponentS). Este método está declarado en la clase Container que está dos niveles por encima en la jerarquía de la herencia. En este caso si utilizamos la instrucción super desde un método paintComponents declarado en la clase JPanel, estaremos llamando al método paintComponents de la clase que heredamos, es decir, Container. En definitiva, a la pregunta que realizas de ¿Qué hariás si el método está declarado dos o tres clases por encima? la respuesta es lo mismo: utilizar super y este se encarga de llamar la método que sobrescribimos en la clase de la que hereda. En el vídeo creo que dije "super" llama al método de la clase padre y puede que de ahí venga la confusión. Dije clase padre porque paintComponent(Graphics g) da la casualidad de que está en la clase inmediatamente superior en la jerarquía de la herencia. Un saludo
@pildorasinformaticas
@pildorasinformaticas 10 жыл бұрын
pildorasinformaticas Puedes examinar este ejemplo sencillo: class Clase1{ public int metodo1(int num){ num=num+5; return num; } } class Clase2 extends Clase1{ //aquí no hay nada. Solo como clase puente } class Clase3 extends Clase2{ public int metodo1(int num){ num=super.metodo1(num); //Esta instrucción llama a metodo1 DOS clases por encima return num; } } public class Pruebas{ public static void main(String agrs[]){ Clase3 obj=new Clase3(); System.out.println(obj.metodo1(5)); // Esto imprime un 10 } }
@adryanrex
@adryanrex 7 жыл бұрын
Gracias por estos grandes videos, ahora estoy dandole a swing y quería preguntarte una duda que me corroe, pero solo si tienes tiempo pues respóndeme ^^ ¿Puedo incluir algun tipo de lista de selección en un JFrame? Es decir, que en la ventana, me aparezcan una serie de opciones para elegir clicando en 1 de ellas y teniendo sus correspondientes botones de aceptar y cancelar como en JOptionFrame? Gracias por tu tiempo, de verdad.
@pildorasinformaticas
@pildorasinformaticas 7 жыл бұрын
Hola !! Pues si te he entendido, claro que si. puedes incluir un JComboBox para seleccionar elementos. Los botones de aceptar y cancelar también los puedes incluir. Un saludo!!
@adryanrex
@adryanrex 7 жыл бұрын
Muchas gracias, me ayudas muchísimo. Un saludo y sigue así.
@juanitoelchispa6492
@juanitoelchispa6492 10 жыл бұрын
La colocación del texto en la lámina con la X y con la Y, ¿Se podría interpretar igual que margin_left y margin-top en CSS?; left= X, y top= Y. ¿O así no vale? Cada vez me está gustando más.
@pildorasinformaticas
@pildorasinformaticas 10 жыл бұрын
Juanito elchispa Se puede interpretar como un margin, o mejor aún como un padding (distancia del contenido al contenedor) entendiendo como contenido el propio texto y contenedor el frame. Saludos !!
@fernandocarlos9477
@fernandocarlos9477 7 жыл бұрын
exacto, para los que trabajan con android seria la distancia a los bordes con respecto al contenedor padre, en este caso el Jframe
@teresamurillomurillo
@teresamurillomurillo 4 жыл бұрын
hola profe juan gracias por este curso tan maravilloso. mi pregunta es, hice todo tal cual en el video y escribo el texto pero no se visualiza solo sale el marco que puedo hacer muchas gracias mil bendiciones
@hectorquintero6594
@hectorquintero6594 6 жыл бұрын
A mí me pasó algo que aún no comprendo: Traté de hacer lo mismo pero usando un ícono diferente con setIconImage luego instancié el objeto de tipo Lamina y usé add(milamina), además puse el método setVisible en el constructor como está en el vídeo... El problema es que cuando ejecutaba el programa, no aparecía ningún texto, así que intenté usar marco1.setVisible en el Main, y de esta manera sí funcionó, o también instanciando la lámina y usando add antes de establecer el icono.
@fabricadelexito1496
@fabricadelexito1496 7 жыл бұрын
hola profe juan, ya voy por este video del curso y me vino una duda, no es acerca del curso pero si del lenguaje y sus actualizaciones y mi pregunta es la siguiente, que tanto ha cambiado java desde que hiciste el curso a la actualidad ? ¡ puede que un lenguaje cambie su sintaxis con una actualizacion ? y que libro me recomiendas para reforzar mis estudios de java y actual
@RGamingK
@RGamingK 8 жыл бұрын
Hola Juan, queria hacerte una pregunta, no esta relacionada con este video, pero creo que es valida para todo lo relacionado con JAVA. Como creo un archivo .exe que me abra el archivo 'jar' que previamente exporte en eclipse?(algo asi como el 'exe' que trae el JDownloader por ejemplo) me explico? Desde ya el curso, excelente.
@pildorasinformaticas
@pildorasinformaticas 8 жыл бұрын
+Uli Sofia Hola !! Hay multitud de programas no oficiales en internet que te permiten crear .exe con tu código Java. Digo no oficial porque la principal característica de Java es que es multiplataforma. Un archivo .exe solo es válido bajo Windows y por este motivo no está dentro de los estándares Java crear .exe En su lugar tenemos los jar ejecutables que son válidos para cualquier plataforma (aunque es cierto quie la plataforma de turno debe tener instalada la JRE) Si introduces en Google "crear exe java" obtendrás cientos de enlaces a páginas donde podrás descargar software que lo hacen. Un saludo
@RGamingK
@RGamingK 8 жыл бұрын
Muchas Gracias, si eso estuve viendo en google mas temprano, pero me quedo la duda si habia alguna forma sin usar algun programa externo, era mas por curiosidad que por otra cosa,Gracias y saludos, excelente curso.
@estudiantealexherrera1222
@estudiantealexherrera1222 7 жыл бұрын
Gracias excelente vídeo estoy mucho.
@pedrohuerta1165
@pedrohuerta1165 8 жыл бұрын
Que tal Profesor, sus clases son muy buenas. Pero tengo un par de dudas: 1) en: Toolkit mipantalla = Toolkit.getDefaultToolkit() .. ¿que viene a ser "mi pantalla" ?porque veo que se comporta como un objeto que utiliza los métodos de Toolkit. pero toolkit es una clase abstract. es decir no se puede instanciar2)En: Dimension tamanoPantalla = mipantalla.getScreenSize() . ¿Cómo es que puede utilizar el método getScreenSize() que es abstract. es decir no esta implementado?
@pildorasinformaticas
@pildorasinformaticas 8 жыл бұрын
+pedro huerta Hooola de nuevo Pedro. Esta pregunta se te ha duplicado por ahí. Ya la respondí, espero que la encuentres. Un saludo
@joseKKX
@joseKKX 7 жыл бұрын
@pildorasinformaticas, visto que hay cantidad de métodos que existen,¿como sugieres que aprendamos o tengamos conocimiento de ellos? ¿Coger la Api a pelo y emplezar a leer es lo recomendable?. ¿O según vienen las dudas ir leyendo? GRACIAS
@pildorasinformaticas
@pildorasinformaticas 7 жыл бұрын
La API debe consultarse como una enciclopedia. Nadie que tenga en casa una enciclopedia la coge por las buenas y se pone a leer. La enciclopedia se coge cuando quieres buscar información de algo en concreto. Lo mismo con la API de Java. También es muy recomendable combinar el uso de la API con el uso de Google. Google te dará una primera información general y después la API concretará más la búsqueda de información. UN saludo!!
@kevinsboboda
@kevinsboboda 2 жыл бұрын
disculpa la pregunta pero estoy un pco perdido con la api de java y quiero entenderla, en el video anterior hicimos esto: Toolkit mipantalla = Toolkit.getDefaultToolkit(); Dimension tamaniopantalla= mipantalla.getScreenSize(); mi pregunta es por que en el video anterior tuvimos que declarar una variable Dimension, entiendo que es para sacar el tipo de pantalla con el toolkit y que se saca las medidas de la pantalla con el Dimension pero en este video teníamos esto en la api : protected void paintComponent(Graphics g) mi pregunta es por que no hicimos lo mismo con Graphics ?
@MGGF95
@MGGF95 8 жыл бұрын
¿Hola qué tal? Excelente vídeo. Tengo una pregunta. En cierta parte decís que no se necesita declarar el constructor de JPanel porque automáticamente llama al construtor por defecto, pero si yo quisiera ser reduntante, ¿Podría crear el constructor? para esto ¿Debería crear un constructor para la clase "Lamina" lamina(){} y adentro llamar al contructor padre sin argumentos --> lamina(){super()} ? ¿funcionaria igual? En JFrame,de igual forma el constructor por defecto para que se cree el marco es JFrame(), pero en este caso si que declaramos un contructor para la clase que llamamos "MarcoConTexto" MarcoConTexto(), pero no invocamos el constructor padre Super(). Da igual si lo escribimos o no ( Super() )? siempre llamaría al constructor padre en caso de omitir esa línea de código super() (constructor por defecto del padre)? ¡Gracias por todo! Excelentes vídeos.
@eloytololoy8948
@eloytololoy8948 4 жыл бұрын
Me confundí un poco , estaba acostumbrado a crear paneles instanciado directamente de JPanel. Buena forma !
@pablomunoz3671
@pablomunoz3671 10 жыл бұрын
Buenos días Juan, después de acabar el vídeo me surgen unas dudas, ¿ en qué momento se llama al método paintComponent () , es desde el constructor JPanel() o Lamina() al construir el objeto milamina? de ser afirmativo, ¿ qué objeto gráfico le estamos pasando como argumento? , el objeto lámina?.. Un saludo y gracias.
@pildorasinformaticas
@pildorasinformaticas 10 жыл бұрын
Pablo Muñoz Hola !! El método paintComponent es llamado cuando se crea la lámina (es un método perteneciente a la clase JComponent y que hereda JPanel) de forma automática y cada vez que realizamos alguna operación del tipo minimizar, maximizar, o redimensionar la lamina que a su vez está dentro del marco también es llamado. El objeto gráfico que se le pasa por parámetro es lo que haya dibujado en ese momento en la lámina, de tal forma que cuando cargas la lámina por primera vez se llama a pintComponent y se le pasa por parámetro Graphics g, siendo g lo que tengamos en ese momento en la lámina. Si redimensionamos, minimizamos etc volvemos a llamar a paintComponent pasándole por parámetro lo que tengamos dibujado en ese momento. En realidad estamos llamando continuamente a paintComponent cuando realizamos operaciones con la ventana y pasándole por parámetro lo que haya dibujado que a su vez es pasado al método paintComponent de la clase JComponent con la instrucción super. Un saludo
@fernandocarlos9477
@fernandocarlos9477 7 жыл бұрын
excelente respuesta maestro...pero sigo con una inquietud, ¿ por qué tenemos que llamar al metodo paintComponent de la clase JComponent ( la super clase) con la instrucción super?
@washotv9459
@washotv9459 6 жыл бұрын
Que tal Juan, nunca usas las herramientas que vienen en IDE para ahorrarse todo eso y hacerlo por medio de las herramientas ya establecidas o en el futuro lo realizas de esa manera, saludos!
@pildorasinformaticas
@pildorasinformaticas 6 жыл бұрын
No se ahora mismo a qué herramientas te refieres porque Eclipse trae muchas. Pero no, no soy amigo de enseñar a hacer las cosas con las herramientas del IDE porque entonces no estaría enseñando Java, sino Eclipse. Y de poco le serviría a alguien si en un futuro tiene que programar con el JDK u otro IDE diferente a Eclipse. Muchos alumnos (también me ocurre en presencial) se quejan de que les enseño a hacer las cosas "picando código" y sin usar las herramientas que vienen con los IDE. Ante el esfuerzo que les supone aprender a programar se preguntan "para qué aprender todo esto si el IDE lo hace solo". Y siempre les pongo el mismo ejemplo: un buen contable que trabaja en un banco nunca hará las operaciones matemáticas con lápiz y papel sino que utilizará una calculadora. Pero tampoco nos imaginamos un buen contable que no sepa hacer esas mismas operaciones con lápiz y papel si no dispone de la calculadora por el motivo que sea. Lo mismo ocurre con un buen programador: en la práctica un programador nunca diseñará una interfaz gráfica "picando código". Pero tampoco nos imaginamos un buen programador que no lo sepa hacer sin usar las herramientas del IDE. Y mi misión es enseñar a futuros buenos programadores. Un saludo!
@juanmanuelsalazarmanuel3379
@juanmanuelsalazarmanuel3379 8 жыл бұрын
Muchas gracias. Tampoco es demasiado importante (por lo menos ahora). Lo buscare. Un saludo
@luisromeroreyes9810
@luisromeroreyes9810 6 жыл бұрын
UNA PREGUNTA SOBREESCRIBISTE EL METODO paintComponent POR QUE LA CLASE Graphics ES ABSTRACTO VERDAD?????????
@waroo0007
@waroo0007 9 жыл бұрын
Hola que tal. Pues bien me estoy mirado el curso y me veo el aparado de " Aplicaciones gráficas Swing " entero y unos cuantos de eventos, en el momento de hacerlo no tenia computadora en mano, pues estaba haciendo que haceres del hogar y demas por lo que no iba haciendo los ejercios de turno en su momento, pero voy tomando apunte (mucha atencion a cada tema tratado...) ya con unos cuantos videos de " Eventos " (me parese que evento de raton), me decido a por mi cuenta crear una interfaz grafica con que implemente todos los conocimientos acumulados (ventanas, paneles, ordere arrays etc....), el problema me sale practicamente comensando (1. Me creo clase principal (mail), 2. clase que extienda de "JFrame") y hasca aca todo bien me creo mi marco, corros una cuantas pruevas y todo funciona, el problema viene con "paintComponet", ago mi clase "JPanel" agrego el metodo"paintComponent(Graphics g)" llamo a su constructor clase padre " super....", (me creo un campo de texto JTextField) agrego el JPanel a el JFrame y cuando ejecuto el programa veo que aparece en pelotas, me voy al codigo reviso todo ejecuto y lo mismo, pienso a lo mejor se me paso algo por alto, asi que retrocedo al video donde explicavas lo refentes a dibijo en ventanas etc,... (este video), veo el video, realiso exactamente el mismo ejercicio y a mi sorpresa cuando corro el programa nuevamente la ventana aparece en pelota, hay alguna configuracion que debo hacerle a(Java-NetB-Ecl...) para que me imprima " public void paintComponet(Graphics g){...}" Saludos CORDEALES Francis Gil
@pildorasinformaticas
@pildorasinformaticas 9 жыл бұрын
Francis Gil Hola !! No, no hay nada especial que debas hacer para que se muestre bien la aplicación. Lo máximo que puedo hacer desde aquí para ayudarte, es pedirte que copies y pegues tu código por acá para ver si hay algo incorrecto. Un saludo
@gonzelos
@gonzelos 6 жыл бұрын
el código es public void paintComponent(Graphics g){...} el tuyo public void paintComponet(Graphics g){...} falta la N en ComponeNt
@andressuarez8630
@andressuarez8630 8 жыл бұрын
hola. Estoy siguiendo el curso y me resulta muy interesante, por lo que he tratado de ir llevando el hilo desde la primera clase. Mi duda surge cuando en la clase 58 se trata como escribir dentro de una ventana incorporando laminas, ya que he escrito el código tal cual lo especifica en la clase y lo he revisado varias veces, pero no logro ver por qué solo me aparece el marco y no el texto que colocamos en la lamina. bueno, si me pudieses aclarar esto te agradecería. Saludos desde Uruguay.. Atte.Andrés.
@pildorasinformaticas
@pildorasinformaticas 8 жыл бұрын
+Andres Suarez Hola !! Es probable que el error se deba a la instrucción setVisible(true). Esta instrucción debe estar en último lugar dentro del constructor. Si la tienes en el main, también debe ir el último lugar. Esto fue un error que cometí yo a la hora de hacer los primeros vídeos de Swing. Más adelante en el curso se comenta este fallo y su corrección. Si no fuera este tu error, entonces copia y pega por aquí tu código para que pueda encontrar el error. Un saludo
@gilbertardila
@gilbertardila 3 жыл бұрын
Muchas gracias Juan por la respuesta, me estaba rompiendo la cabeza y gracias a Andrés por la pregunta
@alvaro9107
@alvaro9107 7 жыл бұрын
Entiendo el concepto lamina lo que no entiendo es la utilización de JPanel y paintComponent, es decir, es obligatorio utilizar esa clase y ese método en concreto para construir la lamina, si quiero construir mas laminas como lo hago? y que pasa si no utilizas esa clase y ese método y utilizas directamente la clase Graphics? un saludo.
@claudiomendieta
@claudiomendieta 6 жыл бұрын
Me rompí la cabeza pero creo que estoy aprendiendo de a poco
@damianbajofer9169
@damianbajofer9169 8 жыл бұрын
Me imaginare a esos paneles como Divs en HTML, aunque estos aparecen uno sobre otros sin moverse, pero en teoria seria lo mismo ¿no?
@jlsogorb
@jlsogorb 3 жыл бұрын
Probando el ejemplo me he dado cuenta que en realidad cuando pones las coordenadas del 'drawString', la 'x' se refiere al borde izquierdo del frame (como bien se ha explicado), pero la 'y' no es desde el borde que hay debajo de la barra de título de la ventana, sino desde arriba del todo. Podéis hacer la prueba de lo que ocurre si ponéis g.drawString("Escribiendo en mi primer frame", 100, 4);
@jlsogorb
@jlsogorb 3 жыл бұрын
Me respondo a mí mismo. Sí que toma la 'y' desde el borde interno del frame, solo que toma como referencia la parte inferior del texto que estamos escribiendo.Por tanto de la palabra 'Ahora?, las coordenadas (x , y) se refieren al extremo de abajo izquierdo de la letra 'A'.
@3stepsahead704
@3stepsahead704 8 жыл бұрын
Maestro (o cualquier persona que pueda responderme), preguntita. ¿En que momento estamos accesando al método "paintComponent();" en el programa? porque obviamente no lo hacemos desde el constructor (tiene constructor por defecto y no usamos super en ningun momento)., Obviamente en algún momento estamos llamando al método, pero no puedo identificar dónde, ¿me lo puede señalar?
@pildorasinformaticas
@pildorasinformaticas 8 жыл бұрын
+Luis Ruelas Hola !! Esta pregunta me la han hecho muchas veces... El método paintComponent tiene la particularidad de que se invoca (llama) automáticamente al iniciar el programa o al realizar cualquier operación con el marco (minimizar, redimensionar etc). Un saludo
@3stepsahead704
@3stepsahead704 8 жыл бұрын
pildorasinformaticas Todas las gracias, Maestro, por tomarse la molestia de contestar mi comentario c:
@adanagl
@adanagl 6 жыл бұрын
yo creo que lo estamos llamand desde el constructor de JPanel.... nosotros estamos usando el constructor de Lamina por defecto, el cual de seguro tiene una instruccion super() el cual nos direcciona al de JPanel
@dnetford5640
@dnetford5640 4 жыл бұрын
Activo!, Queria preguntar. Despues de culminar los 276 videos. E iniciar con el curso de Java Spring, y Android. Que seguiria? Quisiera crear programas con fines empresariales multi plataforma, ¿Que ruta me recomendaria?
@martita31779
@martita31779 8 жыл бұрын
Una pregunta que me surge. ¿Se podría aplicar este método sin sobreescribirlo? me explico. Imaginemos que no queremos construir una nueva clase que herede de JPanel, sino que queremos crear un objeto de tipo JPanel y usar el método paintComponent directamente.
@pildorasinformaticas
@pildorasinformaticas 8 жыл бұрын
+Martita VL Hola !! Claro que lo podrías usar. Si no heredas de JComponent ya no lo estás sobreescribiendo. Después usas una instancia de JComponent y podrías usar paintcomponent sin sobreescribirlo. Un saludo!!
@anyersonespana6831
@anyersonespana6831 Жыл бұрын
Gracias, Crack.
@Vitute2020
@Vitute2020 4 жыл бұрын
Hola Juan, primero mis sinceras felicitaciones por todo tu gran trabajo. Ojala pudieses responder esta consulta es que no he encontrado como resolverla y viendo tus videos mas adelante no encuentro una explicación. En el minuto 6:33 dices que el metodo paintComponent recibe un objeto de la Clase GRAPHICS en forma analoga a que si recibiese un objeto de la Clase STRING. Yo entiendo que la Clase STRING es del tipo "public final" mientras que la Clase GRAPHICS es del tipo "public abstract", sin embargo a pesar de que GRAPHICS es "abstract" (no se podría instanciar entonces), dentro de la CLASE Panel si utilizas un objeto instanciado "g" de esa Clase GRAPHICS como si nada. La verdad no entiendo como es posible? Me podrias aclarar por favor? Muchas gracias!
@2002gabrielgf
@2002gabrielgf 2 жыл бұрын
Tengo esa misma duda.
@mauriciomontes8235
@mauriciomontes8235 10 жыл бұрын
Hola que tal..gracias por un nuevo video y queria aprovechar de hacerte una pregunta, construir interfaces de usuario de la manera que lo muestras es bien laboriosa (aunque necesario), crear todo desde cero...sin embargo netbeans tiene opciones para dibujar los componentes de manera grafica..y es qui mi pregunta... mucha gente que conozco dice: "mejor eclipse por que creas todo desde cero, sin embargo netbeans te crea mucho codigo basura"...¿que opinas tu sobre eso?..saludos y gracias
@pildorasinformaticas
@pildorasinformaticas 10 жыл бұрын
Mauricio Montes Eclipse también tiene por ahí un plugin para crear aplicaciones gráficas creo recordar... Mi opinión al respecto es que primero hay que saber crearlo bien desde 0 y después puedes utilizar entornos de desarrollo que te generen el código como netbeans. Respecto a que genera código basura, no estoy muy de acuerdo con eso. Genera código Java que muchas veces el "programador" no sabe interpretar y lo denomina por este motivo "código basura". Yo utilizo Eclipse "por costumbre", pero NetBeans puede ser tan bueno o mejor que Eclipse. Es cuestión de gustos creo yo. Un saludo
@mauriciomontes8235
@mauriciomontes8235 10 жыл бұрын
pildorasinformaticas gracias por responder..yo sin ser un experto (soy estudiante)..pienso como tu, me parecía raro que una herramienta como netbeans te cree "basura" siendo una herramienta para agilizar el desarrollo...gracias por responder..saludos
@pedrohuerta1165
@pedrohuerta1165 8 жыл бұрын
Hola Profesor, nuevamente estoy por aqui. Si, se me paso una pregunta disculpe.......Pero, ahora viendo este video me vuelve la duda (¿Como puede usar un método abstracto ya que no esta implementado?) por lo siguiente: En este video utiliza el método: public abstract void drawString(String str, intx , int y) . en este caso no devuelve ningún valor por ser "void". además veo que escribe texto. pero es "abstract" como es posible eso? o esta implementado en algún lugar.... DE antemano Gracias por la atención.
@pildorasinformaticas
@pildorasinformaticas 8 жыл бұрын
+pedro huerta Mira este ejemplo: abstract class Persona{ public abstract void daNombre(String nombre); } public class Principal { public static void main(String[] args) { } public void estableceNombre(Persona p){ p.daNombre("Juan"); } } En este ejemplo el método daNombre(String nombre) también es abstracto, también es void y sin embargo es capaz de establecer el nombre de una person. ¿Cómo es posible esto si el método abstracto está sin implementar? Es exactamente lo mismo que pasa con el método drawString de la clase Graphics. Ahora bien, si tu pregunta es cómo se consigue que el método drawString "dibuje" un texto en consola, la respuesta es porque está definido dentro de la clase Graphics. Si entras en la API y lees la descripción de la clase Graphics verás que la descripción nos da a entender que es una clase cuyo objetivo es pintar gráficos. Si aún así te preguntas "y cómo consiguen que la clase Graphics y sus métodos pinten gráficos si yo no veo código por ningún lado", entonces habría que ir a preguntar a los programadores de Oracle (antiguos programadores de Sun) cómo demonios han hecho esta especie de magia. Si yo supiera hacer esto, no estaría enseñado las reglas de la sintaxis de Java que ellos inventaron, sino que me dedicaría a la creación de nuevos lenguajes de programación ;) Un saludo
@pedrohuerta1165
@pedrohuerta1165 8 жыл бұрын
+pildorasinformaticas Que tal Profe. con el ejemplo lo entendí mejor .. me falta mucho por aprender.. Gracias por su tiempo.
@acordesify
@acordesify 6 жыл бұрын
profe la primera vez que le escribo saludos desde Guate , los videos me an ayudado .. tengo una duda tienes algun tutorial sobre Java FX???
@jaeld.1102
@jaeld.1102 5 жыл бұрын
Hola Juan! tengo una pregunta un tanto... no sé tal vez no tenga lógica preguntarte, pero cómo es que conoces tan bien la API de JAVA? o más bien, cómo hiciste? en cada video yo te sigo y me interiorizo entrando por mi misma, pero me refiero, mi pregunta va orientada a: supongamos que quiero una clase que dibuje figuras geométricas, no tengo conocimiento de si existe o no, cual sería tu proceso por el cual llegas a que esa clase existe en la API y la vas a utilizar? sé que parece tonto, pero tuve un proyecto en la facultad y me volvi re loca buscando en Google, ahora con tus videos entiendo muchísimo más! solo quería confirmar tu método, además de práctica y constancia! GRACIAS!!!
@cesarrojas7839
@cesarrojas7839 10 жыл бұрын
Una pregunta es necesario el método paintComponet para utilizar la clase Graphics o tambien puedo crearlo con un otro método que nosotros lo creemos Ejemplo: public void creardibujo(Graphics g) y si es así cual es la diferencia. Muy pero muy Buenos tus videos muy ilustrativos saludos!!! es justo lo que estaba buscando :) .
@pildorasinformaticas
@pildorasinformaticas 10 жыл бұрын
Cesar Rojas Hola !! Has de utilizar siempre el método paintComponent ya que este está definido en la clase JComponent y es invocado automáticamente por Java al cargar la lámina. Cuando utilizas paintComponent, debes utilizar la instrucción super() para ejecutar el método paintCoponent de JComponent y que este haga su trabajo (se explica más detenidamente en los vídeos). Si en vez de utilizar painComponent, creas tu propio método, Java no sabe qué hacer con ese método porque nunca es invocado. Un saludo
@Ccaarlos98
@Ccaarlos98 7 жыл бұрын
Una dudilla. Si la clase graphics es abstracta: ¿cómo puedes instanciarla cuando pasas como parámetro "Graphics g"? Y si drawString es un método abstracto: ¿cómo no necesitas sobreescribirlo?
@andersoncalderoncampos8335
@andersoncalderoncampos8335 5 жыл бұрын
1. solo está declarando un objeto de la clase Graphics , cosa muy distinta que es instanciar pues cuando se instancia a un objeto se le da un valor inicial y este valor inicial se le da llamando al constructor haciendo uso del new . instanciar --> Graphics g = new Graphics (); 2.Cuando una clase hereda de otra que tiene un método abstracto ahí si hay necesidad de sobrescribir el método que es abstracto, pero como la clase Lamina no hereda de la clase Graphics pues no hay necesidad de sobrescribir el método drawSting.
@antoniol.9340
@antoniol.9340 5 жыл бұрын
@@andersoncalderoncampos8335 Gracias por la aclaración. No obstante me queda la duda de que, ya que el método drawString es abstacto, eso significa que esta declarado pero no esta desarrollado; de hecho en eclipse al utilizar la combinación "ctrl+click" sobre el método te lleva a donde fue declarado (en este caso la clase JComponent) y se puede apreciar que simplemente esta declarado. Ahora bien, ¿cómo es posible que haga lo que queremos que haga si en su interior no hay código alguno? Trataré de explicarme mejor: en la clase JComponent se puede ver el siguiente código: public abstract void drawString(String str, int x, int y); De acuerdo a la definición de métodos abstractos, este sigue el paradigma de los mismos, a saber se declara pero no se desarrolla, ¿cómo es posible entonces que cuando lo llamemos haga algo (en nuestro caso dibujar texto) en lugar de nada pues no hay código que le diga qué hacer?
@cristhianelvisvelasquezven3726
@cristhianelvisvelasquezven3726 5 жыл бұрын
@@antoniol.9340 En un video anterior, el profesor mencionó que algunas funciones abstractas sí están definidas según el api de java, por eso se les invoca al metodo sin sobreescribir. La verdad aún no tengo claro eso, estoy confundido como tú. Pero creo Sobreescribes cuando tú PONES IMPLEMENTS
@lmga4159
@lmga4159 5 жыл бұрын
@@antoniol.9340 Tengo la misma pregunta que vos. Si encontraste la respuesta avísame. Saludos.
@antoniol.9340
@antoniol.9340 5 жыл бұрын
G Larroca Por desgracia aún no he encontrado respuesta. Aunque, la verdad sea dicha, no he realizado ninguna búsqueda con el fin de aclarar este punto en concreto. Sigo estudiando mediante el curso de PilforasInformaticas (por ahora voy por el vídeo 80), enlaces a páginas dedicadas a lenguaje java y algún que otro libro con la esperanza de, al mismo tiempo que me voy formando en el lenguaje, dar fortuitamente con la respuesta. Por ahora me temo que no tengo respuesta. Si diera con ella compartiré la solución (si cuando la encuentre aún recuerdo hacerlo y dónde, claro). Un saludo.
@matthewvillalobos6380
@matthewvillalobos6380 7 жыл бұрын
buenas juan, recien me estoy metiendo en esto de la programacion es dexir no soy un experto, y me surge una duda, cuando programamos interfacez graficas o cualkier otro sistema donde y como viene a ejecutarlo uno como usuario?? osea, yo programo una interfaz grafica que de acceso a un minisistema de facturacion, el usuario o cliente como lo ejecuta? xq hasta ahora todas las claces e interfaces las hemos estado ejexutando desde el editor de codigo. mi duda es, como creo un ejecutable o parecido para que no se tenga q entrar al editor y poner en el boton "play" siempre que quiera ejecutat dicha interfaz. no se si me explico bien pero te ruego y agradesco q me saqes esta duda!! mil gracias!
@adivinaquiensoy8714
@adivinaquiensoy8714 8 жыл бұрын
una duda porque en Graphics g al escrbir "g".drawString 'g' hay escrbies como si fuese un obejor(o un metodo dentro de otro)?
@pildorasinformaticas
@pildorasinformaticas 8 жыл бұрын
+adivina quien soy Hola!! Porque es un objeto. Se define en los parámetros del método paint. public void paint (Graphics g).... UN saludo!!
@ASURAPRIEST19
@ASURAPRIEST19 6 жыл бұрын
No se que estaba intentando, pero de inicio intente esto: JPanel MPP = new JPanel(); y claro, no hice nada, no se que estaba intentando, ahora, intente por mi cuenta lo de el metodo paintcomponent, por que no creamos primero un objeto tipo graphics? y luego ya guardar algo en el y luego ya usar el paintComponent con el objeto grafico que nosotros creamos? intente Graphics GR = new Graphics(); y dice que es abstracto, volvere a revisar los videos de clases abstractas, pero me podria refrescar la memoria?
@noreply2030
@noreply2030 5 жыл бұрын
Para a todos aquellos que tienen dudas respecto al eje de coordenadas de las que se hablan. El punto 0x0 se refiere a la esquina superior izquierda, y la esquina inferior derecha será la resolución de vuestro monitor. Es decir, los números siempre serán positivos, si crece el ancho será hacia la derecha, y si crece la altura será hacia abajo.
@pildorasinformaticas
@pildorasinformaticas 5 жыл бұрын
Correcto
@robema
@robema 7 жыл бұрын
Quisiera ayuda para aclarar unas dudas. Seguramente ya ha sido explicado, sin embargo, no lo he estado atento y las dudas se me empiezan a acumular . Las más importantes en este vídeo son : - Porqué las clases MarcoConTexto y Lamina no llevan el modificador de acceso. - Porqué la instancia de Lamina va en dentro del constructor de la clase MarcoConTexto. Gracias
@federicofaiella4240
@federicofaiella4240 7 жыл бұрын
hola, donde dice que puedes sobrescribir el método paintComponent ?? la descripción del método dice que "protected void paintComponent(Graphics g)" que es lo que te indica que lo puedes sobrescribir?
@Abi-ESG
@Abi-ESG 4 жыл бұрын
Yo solía utilizar la clase JLabel para crear etiquetas en vez de la clase JPanel. ¿Habría alguna diferencia o ambas son válidas?
@elfegomelgar
@elfegomelgar 4 жыл бұрын
JPanel no crea etiquetas, en este caso estamos DIBUJANDO un texto con Graphics, como crear un texto en paint con la opcion insertar texto, las etiquetas JLabel van sobre JPanel, muchos programadores tienden a omitir el JPanel y ponen los componentes directamente sobre el JFrame, ¿en que momento usar Graphics para crear texto?, pues yo lo uso cuando he creado graficas, ¿en que momento usar JLabel?, casi siempre vas a usar JLabel, para poner informacion estatica y para mostrar informacion
@Abi-ESG
@Abi-ESG 4 жыл бұрын
@@elfegomelgar Gracias por el apunte! Me enseñaron a hacerlo todo sin el JPanel y me llamó la atención🤔
@OsomWay
@OsomWay 3 жыл бұрын
Lo que no entiendo es como hemos llamado al método sobrescrito si nunca lo hemos utilizado ni le hemos pasado por parámetro un objeto de tipo Graphics
@alfonsolara4592
@alfonsolara4592 3 жыл бұрын
Tengo exactamente la misma duda.
@jorgecaballero7267
@jorgecaballero7267 8 жыл бұрын
En que momento se invoca al metodo paintComponent para que escriba el texto, o es automatico?
@joelacosta7151
@joelacosta7151 Жыл бұрын
El método paintComponent en ningun momento lo estamos llamando es porque ya lo llama automáticamente el constructor verdad?
@carjavsos1173
@carjavsos1173 7 жыл бұрын
Hola profesor publico esto para saber si existe alguna manera de averiguar el numero de pixeles que ocupa la cadena o texto que escribimos en nuestra lamina. Gracias.
@pildorasinformaticas
@pildorasinformaticas 7 жыл бұрын
Nunca me había planteado esto y tengo mis dudas. No conozco ningún método de la API que haga este cálculo directamente (que a lo mejor existe, pero yo no lo conozco). Así que habría que hacer algún tipo de cálculo a partir de las dimensiones del contenedor, por ejemplo un JFrame. La duda que me surge y que tendría que pensar es cómo averiguar la longitud en píxeles de un String.
@luisestebanmonsalve9822
@luisestebanmonsalve9822 8 жыл бұрын
Hola, no entiendo por que la parte visual se esta haciendo con codigo viendo que en NetBeans se hace con un tools y es solo arrastrar los botones, frames, etc..? :S hay algun video explicandolo asi?
@pildorasinformaticas
@pildorasinformaticas 8 жыл бұрын
+Luis Esteban Monsalve Por el mismo motivo que a un niño no puedes enseñarle a sumar, restar, multiplicar y dividir con una calculadora. ¿Qué código Java aprendes si te enseño a arrastrar botones? ¿Qué ocurrirá si un día tienes que programar en algún sitio donde no tienen Netbeans? Un saludo
@manuelelpro7646
@manuelelpro7646 5 жыл бұрын
Como vi que se reescribía el método paintComponent(Graphics g) , entonces pensé en que era libre de crear mi propio metodo que recibiera un parámetro objeto de tipo graphics, pero cuando lo quise invocar con la instruccion add no corrio. Supongo que la instruccion add esta hecha especialmente para invocar al método paintComponent que por naturaleza se sobreescribe
@manuelelpro7646
@manuelelpro7646 5 жыл бұрын
Psdt: eres un crack maestro juan !
@sergiochavez181
@sergiochavez181 9 жыл бұрын
Hola amigo, una consulta tengo una duda en el min 23:16 luego de instanciar milamina, ¿ya no es necesario llamar al metodo paintComponent? es decir escribir: Lamina.paintComponent(); ... para que ejecute las instrucciones en su interior.
@pildorasinformaticas
@pildorasinformaticas 9 жыл бұрын
+sergio chavez Hola !! El método paintComponent se invoca (ejecuta, llama) automáticamente por el simple hecho de crear una lámina. También es invocado de nuevo cuando redimensionamos, minimizamos o maximizamos el frame. También podemos utilizar el método repaint para volver a llamar a paintComponent de forma voluntaria. Un saludo
@sergiochavez181
@sergiochavez181 9 жыл бұрын
+pildorasinformaticas Gracias por la aclaración amigo.
@skao1372
@skao1372 9 жыл бұрын
+pildorasinformaticas Hola súper profesor. Antes de nada muchas gracias por lo que aportas a la comunidad Java. Me están ayudando mucho tus vídeos. Quería que me aclarases, si es posible, lo siguiente: Dices que el método paintComponent() se invoca automáticamente por el simple hecho de crear una lámina (instanciar un objeto tipo lámina). Pero no sé si estarás conmigo que para invocar a un método de una clase en primer lugar se crea un objeto (pe. miLamina) y después se invoca el método que quieres llamar con miLamina.paintComponent(). Entonces no entiendo porque dices que se invoca automáticamente. Estoy algo perdido en este punto. Muchas gracias
@pildorasinformaticas
@pildorasinformaticas 9 жыл бұрын
Me refiero a que no necesitas ninguna instancia para llamar a paintComponent. Simplemente por escribirlo sin llamarlo con instancia alguna, este se ejecutará. Y no solo al iniciar el programa, también se ejecutará al redimensionar el JFrame. Por eso digo que se ejecuta automáticamente. Un saludo
@1985kst
@1985kst 9 жыл бұрын
Una pregunta: Cuándo sobreescribimos y usamos el metodo "public void paintComponent(Graphics g)", no nos pide un objeto tipo "Graphics" para pasarle como parámetro? Es que veo que no hacemos caso a ese parámetro y aun así usamos el metodo sin problemas. Un saludo y gracias
@pildorasinformaticas
@pildorasinformaticas 9 жыл бұрын
Sergio Kstellote Hola !! No termino de entender bien la pregunta ya que efectivamente al sobreescribir el método paintComponent este nos pide un parámetro de tipo Graphics y de hecho se lo pasamos, tal y como se ve en el minuto 18:12 por ejemplo. Posteriormente utilizamos el parámetro de tipo Graphics con el método drawString. Un saludo
@1985kst
@1985kst 9 жыл бұрын
Gracias!! Ya lo he entendido mejor ;) Y muchas gracias por los tutoriales!!
@franciscomora1511
@franciscomora1511 4 ай бұрын
buenas , cordial saludo tengo un inconveniente al darle play o al correr el programa en eclipse no se visualiza la lámina y he hecho todo al pie de la letra lo ùnico diferente es que uso ubuntu o sea linux .¿tíene algo que ver esto?
@santiagoargayo6409
@santiagoargayo6409 8 жыл бұрын
22:44 (para que te orientes) Como es que el metodo paintComponent() no necesita ser llamado para que aparezca luego en la lamina?
@pildorasinformaticas
@pildorasinformaticas 8 жыл бұрын
Porque el método painComponent tiene la característica de que es invocado automáticamente. Esto se hace al cargar el programa y al hacer cualquier operación con el contenedor como por ejemplo maximizar, redimensionar etc. Un saludo!!
@pablino234
@pablino234 2 жыл бұрын
Para centrar una ventana en pantalla cuando esta inicia se puede usar this.setLocationRelativeTo(null);
@carloshuff
@carloshuff 5 жыл бұрын
Como harias para borrar el string que escribiste ?
@andressuarez8630
@andressuarez8630 8 жыл бұрын
hola. El problema de poder ver lo escrito en las laminas que estaba teniendo no lo he solucionado del todo, pero me he dado cuenta después de probar varias cosas que borrando la instrucción "add(milamina);" y volviéndola a escribir pude hacerla andar sin cambiar nada la sintaxis antes escrita. Pero también si lo ejecuto varias veces algunas veces me muestra el texto y otras no. Asumo que puede tratarse tal ves de la instalación de Eclipse salvo que sepas que se puede tratar de otro detalle. igual muchas gracias. Andrés
@pildorasinformaticas
@pildorasinformaticas 8 жыл бұрын
+Andres Suarez Hola !! Es probable que se deba a un error que cometí yo a la hora de programar y que se comenta más adelante en el curso. La instrucción setVisible(true) debe estar siempre en último lugar, tanto si la tienes en el constructor como si la tienes en el main. Un saludo
@hildemancastro5096
@hildemancastro5096 8 жыл бұрын
Buenas dias me gusta mucho su manera de hacer sus videos en realcion ah java, tengo una duda trascribo el codigo del video numero 58 igual, pero me presenta el marco pero no el texto en el panel me gustaria un poco de ayuda gracias
@pildorasinformaticas
@pildorasinformaticas 8 жыл бұрын
Hola !! Copia y pega por aquí todo tu código. Si tengo un rato le echo un vistazo y te ayudo. Si no tengo tiempo, tal vez alguien generoso que lea tu código te pueda ayudar. Un saludo!!
@gabrielhernandezordaz9223
@gabrielhernandezordaz9223 6 жыл бұрын
Tras este video me queda una duda algo estúpida. Cuando establecemos el tamaño en píxels de nuestro marco (Con setSize por ejemplo) determinamos el tamaño de nuestra área de trabajo(El rectángulo que acabas de utilizar para definir la posición del texto) o de la ventana exterior (El rectángulo exterior que incluye los botones de cerrar, minimizar y reducir)? Si alguien pudiera responderme lo agradecería. Por cierto, un curso fantástico. Me está dando la vida!!
@TheAxel8180
@TheAxel8180 4 жыл бұрын
Hola, escribo igual que tu código: class Lamina extends JPanel{ public void paintComponent(Graphics g) { super.paintComponent(g); g.drawString("Probando escribir sobre la lamina", 100, 100); } } también en el constructor del marco: Lamina LaminaPrincipal = new Lamina(); add(LaminaPrincipal); de igual manera al ejecutar, no me muestra el texto, y me hace pensar que no se crea la lámina. Qué puedo hacer?
Curso Java  Aplicaciones gráficas. Swing V. Dibujando en el Frame. Vídeo 59
17:55
Curso Java  Aplicaciones gráficas. Swing VII. Manejando colores. Vídeo 61
25:58
Curso Java  Eventos IV. Eventos de ventana I. Vídeo 68
24:36
pildorasinformaticas
Рет қаралды 87 М.
Curso Java. Aplicaciones gráficas  Swing I. Vídeo 55
26:15
pildorasinformaticas
Рет қаралды 261 М.
KASAPROV VS CARUANA || World Blitz Chess
9:39
Chess Twins
Рет қаралды 12 М.
Curso Java. Interfaces y clases internas  Interfaces IV. Vídeo 52
29:31
pildorasinformaticas
Рет қаралды 110 М.
Curso Java  Aplicaciones gráficas. Swing IX  Incluyendo imágenes. Vídeo 63
27:54
Curso Java  Aplicaciones gráficas. Swing VI  Dibujando en el Frame II. Vídeo 60
23:32
Curso Java  Eventos XII. Múltiples fuentes I. Vídeo 76
22:24
pildorasinformaticas
Рет қаралды 62 М.
Curso Java. Eventos II. Vídeo 66
18:24
pildorasinformaticas
Рет қаралды 106 М.