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

Поділитися
Вставка
  • Опубліковано 12 лис 2024

КОМЕНТАРІ • 318

  • @pildorasinformaticas
    @pildorasinformaticas  3 роки тому +8

    ✅✅ ✅ ✅ ✅ 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 років тому +21

    Que importante para uno que esta aprendiendo, es leer los comentarios, excelente profe

  • @oscarmanuelguarinfigueroa1808
    @oscarmanuelguarinfigueroa1808 Рік тому +2

    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....

  • @joleacud91
    @joleacud91 3 роки тому +10

    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 роки тому +2

      Por que ? me estaba volviendo loco

    • @cristianvega9393c
      @cristianvega9393c 9 місяців тому

      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.

  • @judaperez681
    @judaperez681 3 роки тому +9

    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.

  • @manuelquinteros8936
    @manuelquinteros8936 8 років тому +4

    Volví profe...! A aprender lo mas que pueda.

  • @giorgiechannel4091
    @giorgiechannel4091 6 років тому +2

    Me emociono cada vez que termino un videaso de estos como si estuviera mirando una serie de Netflix. Muchas Gracias

  • @miguelangelvasquezgarcia8235
    @miguelangelvasquezgarcia8235 2 роки тому

    Muchas gracias profesor por estos videos, yo retomando el curso y reafirmando los conocimientos, muchas gracias por compartir estos videos

  • @naweel17
    @naweel17 3 роки тому +2

    Excelentes clases, profe. Estoy aprendiendo muchísimo. Saludos desde Argentina. Gracias!

  • @davidflores4932
    @davidflores4932 9 років тому +11

    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 років тому +2

      +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!!

  • @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 !

  • @mariomadera91
    @mariomadera91 10 років тому +11

    Gracias! Tus cursos son los mejores que hay! Saludo desde Uruguay

  • @vitto8112
    @vitto8112 8 років тому +2

    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!!

  • @jnarvaezg
    @jnarvaezg 9 років тому +5

    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

  • @jolumarcan
    @jolumarcan 8 років тому +48

    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 років тому +32

      +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 років тому +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 років тому +15

      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?

  • @lilianaguarin3209
    @lilianaguarin3209 2 роки тому

    Hola! un saludo desde Colombia. Excelente tu curso Juan, mil gracias! super buenas las explicaciones en cada video.

  • @chuchotech5513
    @chuchotech5513 4 роки тому +1

    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

  • @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

  • @pedronavarro42729
    @pedronavarro42729 8 років тому +1

    excelente profesor pues con animos de seguir aprendiendo mas con sus excelente videos saludos..

  • @bartclavero4548
    @bartclavero4548 9 років тому +2

    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

  • @marinjrglobalhitss
    @marinjrglobalhitss 7 років тому

    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!

  • @antoniovalderrama7080
    @antoniovalderrama7080 10 років тому +2

    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 років тому +1

      Antonio Valderrama Gracias por el comentario. Me alegro de que te gusten los vídeos. Un saludo

  • @arturocortes5352
    @arturocortes5352 6 років тому

    gracias capo, me estas ayudando a entender bien todo este cuento de las interfaces gráficas

  • @beepst
    @beepst 6 років тому +1

    El ejemplo de la mesa es excelente.

  • @giomarsalazar7547
    @giomarsalazar7547 6 років тому +1

    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.

  • @zamoray123
    @zamoray123 9 років тому +3

    Excelente gracias Juan

  • @FunkysProduction
    @FunkysProduction 3 роки тому +2

    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.

  • @alejandrorivera1538
    @alejandrorivera1538 6 років тому +3

    gracias, muy claro todo, enserio eres bueno en esto xD

  • @claudiomendieta
    @claudiomendieta 6 років тому +1

    Me rompí la cabeza pero creo que estoy aprendiendo de a poco

  • @PANCHO7532
    @PANCHO7532 5 років тому +2

    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 (?

  • @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.

  • @jmansanetperez
    @jmansanetperez 6 років тому +1

    Gracias Juan.

  • @Terzaghi12
    @Terzaghi12 4 роки тому +1

    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

  • @jorgeb2789
    @jorgeb2789 7 років тому +23

    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 років тому +23

      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

  • @gustavoandrade178
    @gustavoandrade178 7 років тому +1

    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!!

  • @estudiantealexherrera1222
    @estudiantealexherrera1222 7 років тому +1

    Gracias excelente vídeo estoy mucho.

  • @teldatamcy5656
    @teldatamcy5656 9 місяців тому

    Gracias, excelente!!! Chévere 🍌 2024!!!

  • @jazminroblesrodarte76
    @jazminroblesrodarte76 9 років тому +2

    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

  • @kjim221
    @kjim221 8 років тому +1

    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é.

  • @moacdoce2444
    @moacdoce2444 5 років тому +9

    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 років тому +3

      Sí, al no tener parámetros se trataría del constructor por defecto. Un saludo!

    • @moacdoce2444
      @moacdoce2444 5 років тому +1

      Gracias este curso esta de 1000++

  • @eloytololoy8948
    @eloytololoy8948 4 роки тому +1

    Me confundí un poco , estaba acostumbrado a crear paneles instanciado directamente de JPanel. Buena forma !

  • @juanmanuelsalazarmanuel3379
    @juanmanuelsalazarmanuel3379 8 років тому +1

    Muchas gracias. Tampoco es demasiado importante (por lo menos ahora). Lo buscare.
    Un saludo

  • @alehop1223
    @alehop1223 7 років тому +3

    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!

  • @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

  • @teresamurillomurillo
    @teresamurillomurillo 4 роки тому +1

    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

  • @paulcano3840
    @paulcano3840 9 років тому +1

    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 років тому +1

      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 років тому +1

      No tengo problemas con el inglés jejeje. Ok, te haré caso :-)

  • @alejandrocastillo9260
    @alejandrocastillo9260 10 років тому +2

    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 років тому +2

      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 років тому +2

      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
      }
      }

  • @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

  • @rafaelcesar6656
    @rafaelcesar6656 9 років тому +1

    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

  • @joseKKX
    @joseKKX 7 років тому +1

    @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 років тому +4

      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!!

  • @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?

  • @adryanrex
    @adryanrex 8 років тому +3

    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  8 років тому

      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 8 років тому

      Muchas gracias, me ayudas muchísimo. Un saludo y sigue así.

  • @luisromeroreyes9810
    @luisromeroreyes9810 6 років тому

    UNA PREGUNTA SOBREESCRIBISTE EL METODO paintComponent POR QUE LA CLASE Graphics ES ABSTRACTO VERDAD?????????

  • @damianbajofer9169
    @damianbajofer9169 8 років тому +3

    Me imaginare a esos paneles como Divs en HTML, aunque estos aparecen uno sobre otros sin moverse, pero en teoria seria lo mismo ¿no?

  • @jorgecaballero7267
    @jorgecaballero7267 8 років тому

    En que momento se invoca al metodo paintComponent para que escriba el texto, o es automatico?

  • @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?

  • @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.

  • @anyersonespana6831
    @anyersonespana6831 Рік тому

    Gracias, Crack.

  • @juanitoelchispa6492
    @juanitoelchispa6492 10 років тому +5

    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 років тому +8

      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 років тому +1

      exacto, para los que trabajan con android seria la distancia a los bordes con respecto al contenedor padre, en este caso el Jframe

  • @3stepsahead704
    @3stepsahead704 9 років тому +4

    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  9 років тому +7

      +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 9 років тому +3

      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

  • @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!

  • @andressuarez8630
    @andressuarez8630 8 років тому +2

    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 років тому +2

      +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 роки тому +1

      Muchas gracias Juan por la respuesta, me estaba rompiendo la cabeza y gracias a Andrés por la pregunta

  • @OsomWay
    @OsomWay 3 роки тому +4

    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

  • @noreply2030
    @noreply2030 5 років тому +1

    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.

  • @JheisonRodriguez
    @JheisonRodriguez 9 років тому +8

    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 років тому +23

      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

  • @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.

  • @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?

  • @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 ?

  • @martita31779
    @martita31779 8 років тому +1

    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 років тому +1

      +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!!

  • @mauriciomontes8235
    @mauriciomontes8235 10 років тому +1

    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 років тому +3

      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

  • @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!

  • @RGamingK
    @RGamingK 8 років тому +3

    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 років тому +3

      +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 років тому +3

      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.

  • @hildemancastro5096
    @hildemancastro5096 8 років тому +1

    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!!

  • @TheAndresCera
    @TheAndresCera 7 років тому +1

    tus clases son magnificas, como estudiante de ingeniería informática y de sistemas las aprecio mucho, pero lo que no veo necesario es que crees clases extras para esto, puedes simplemente crear un objeto JFrame y manipularlo con las mismas instrucciones, muchas gracias por tus clases.

    • @pildorasinformaticas
      @pildorasinformaticas  7 років тому +1

      Gracias por el comentario. Así es, tienes razón. De hecho, en ejemplos más adelante en el curso, desarrollo ejemplos de código en los que manipulo JFrames y JPanels sin crear clases adicionales. Intento avanzar poco a poco en este sentido para que el alumno lo asimile mejor. Aquellos que tenéis conocimientos en la materia os dais cuenta de que los códigos pueden ser más eficientes. Un saludo!

  • @carjavsos1173
    @carjavsos1173 7 років тому +1

    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 років тому +1

      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.

  • @adivinaquiensoy8714
    @adivinaquiensoy8714 8 років тому +2

    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!!

  • @Abi-ESG
    @Abi-ESG 4 роки тому +1

    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 роки тому +2

      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 роки тому +1

      @@elfegomelgar Gracias por el apunte! Me enseñaron a hacerlo todo sin el JPanel y me llamó la atención🤔

  • @cesarrojas7839
    @cesarrojas7839 10 років тому +1

    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 років тому +2

      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

  • @pablino234
    @pablino234 2 роки тому

    Para centrar una ventana en pantalla cuando esta inicia se puede usar this.setLocationRelativeTo(null);

  • @pedrohuerta1165
    @pedrohuerta1165 8 років тому +2

    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

  • @luisestebanmonsalve9822
    @luisestebanmonsalve9822 8 років тому +1

    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 років тому +3

      +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

  • @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 роки тому +1

      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'.

  • @juanmanuelsalazarmanuel3379
    @juanmanuelsalazarmanuel3379 8 років тому +1

    Buenas noches. En Mac las ventanas no salen con icono, por lo que no se cambia. ¿Hay otra forma de hacerlo?¿Hay que posicionar el icono dentro de la barra de la ventana? Gracias

    • @pildorasinformaticas
      @pildorasinformaticas  8 років тому

      Es una de las cosas que ocurren al utilizar diferentes Sistemas Operativos. Cada uno de ellos tiene una forma diferente de gestionar el "look and feel" de las ventanas. Desconozco si existe forma de hacer que aparezca el icono en los JFrame bajo MacOs... Prueba a consultar vía google. Siento no ser de más ayuda en esta ocasión. Un saludo!!

  • @sergiochavez181
    @sergiochavez181 9 років тому +1

    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 років тому +2

      +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 років тому +1

      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

  • @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?

  • @carloshuff
    @carloshuff 5 років тому

    Como harias para borrar el string que escribiste ?

  • @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???

  • @washotv9459
    @washotv9459 6 років тому +1

    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 років тому +7

      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!

  • @pablomunoz3671
    @pablomunoz3671 10 років тому +2

    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 років тому +6

      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?

  • @joelacosta7151
    @joelacosta7151 Рік тому

    El método paintComponent en ningun momento lo estamos llamando es porque ya lo llama automáticamente el constructor verdad?

  • @mdyaguache
    @mdyaguache 7 років тому

    Tengo una duda profesor o cualquier persona que quiera ayydarme ....en netbeans al momento de crear un jpanel xq no se crea con herencia lo único que crea es private javax. swing.JPanel

  • @1985kst
    @1985kst 9 років тому +1

    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 років тому +1

      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!!

  • @miguelbustamanteortega9774
    @miguelbustamanteortega9774 7 років тому

    +pildorasinformaticas profesor, una consulta porque este método lo puso "public" si la API indica que tiene que ser protected?
    protected void paintComponent(Graphics g)
    gracias de antemano. salu2

    • @adriancordova1618
      @adriancordova1618 3 роки тому

      Porque se está redefiniendo, un método abstracto se puede redefinir tanto su código como su forma en cómo está declarado (public, protected, etc.) En este caso se redefine a public para poder ser accesible fuera de la clase Lamina, en este caso, en la clase principal

  • @andressuarez8630
    @andressuarez8630 8 років тому +1

    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 років тому +3

      +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

  • @waroo0007
    @waroo0007 9 років тому +1

    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 7 років тому

      el código es
      public void paintComponent(Graphics g){...}
      el tuyo
      public void paintComponet(Graphics g){...}
      falta la N en ComponeNt

  • @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.

  • @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?

  • @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

  • @pedrohuerta1165
    @pedrohuerta1165 8 років тому +1

    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 років тому +1

      +pildorasinformaticas Que tal Profe. con el ejemplo lo entendí mejor .. me falta mucho por aprender.. Gracias por su tiempo.

  • @animation6380
    @animation6380 7 років тому +1

    una pregunta si es para poner un texto no seria mejor poner un JLabel

    • @pildorasinformaticas
      @pildorasinformaticas  7 років тому +1

      Ya no recuerdo qué hacía en este vídeo, pero si solo vas a poner un texto sin más, el JLabel es lo apropiado. Un saludo!!