Curso Java. Interfaces y clases internas. Clases internas I. Vídeo 53

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

КОМЕНТАРІ • 207

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

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

  • @davidgjordangj5313
    @davidgjordangj5313 8 років тому +21

    genial naciste para enseñar tienes un don de verdad felicidades

  • @MGGF95
    @MGGF95 8 років тому +26

    Excelente explicación, voy algo atrasado con los vídeos pero espero que el contenido de este curso java siga aumentando. Gracias por hacer estos vídeos.

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

      Gracias a ti por seguirlos. Me alegro de que te gusten. Un saludo!!

  • @leandroviera2429
    @leandroviera2429 4 роки тому +2

    Años siguiéndolo ,con usted aprendí y aprendo aún mucho ,un grande.
    Saludos desde Colombia.

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

    Me he incorporado tarde pero voy avanzando. El curso extraordinario. Muchas gracias. De vez en cuando, repito algún video ya pasado para reforzar.

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

      +Carlos Jorge De Moganda Gracias por el comentario. me alegro de que te gusten. Repetir vídeo es inevitable con algunos conceptos. Un saludo!!

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

      Yo en el 2021 :'C

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

      @@dearalex2056 Yo en 2023 XD

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

      @@kevinjimenez6143 yo en Febrero 2024.🙂

  • @Yo-mo5mf
    @Yo-mo5mf 9 років тому +2

    Hola a todos.Como siempre doy las gracias a Juan por exelente curso.En relacion a
    patrones de diseño,tambien me parece aspecto muy importante.Yo,que soy autodidacta,tengo ese problema.Al intentar hacer el programa propio(reloj por ejemplo),
    no tengo ni idea de que empezar,no tengo orden predeterminado.
    De momento tengo una idea y hago lo siguiente.Intento comentar programas hechas por Juan en los videos(una especie de pseudocodigo).Eso me ayuda entender mejor funcionamiento del programa.Aqui le cuelgo ejemplo del video 53 :temporizador.
    Disculpad por fallos y si alquien quiere colgar su vercion de pseudocodigo seria interesante analisarlo.Saludos a todos

    • @Yo-mo5mf
      @Yo-mo5mf 9 років тому +6

      /*este programa muestra hora actual cada 3 segundos acompañandolo con un beep.
      *para eso creamos un objeto miReloj y le pasamos como parametros(intervalo de ejecucion y sonido)
      *antes creamos una clase Reloj donde declaramos variables:int intervalo y boolean sonido.El constructor tendra esos parametros:intervalo y sonido
      *En esa misma clase declaramos y definimos un metodo enMarcha() para poner en marcha nuestro objeto miReloj.
      *para eso dentro del metodo tenemos que crear objeto temporizador de clase Timer que va a encargar a arrancar nuestro programa
      *para instanciar objeto de clase timer necesitamos 2 parametros(intervalo de ejecucion de tipo int e un objeto de tipo actionListener)
      *con el metodo start() arrancamos temporizador
      *como uno de los parametros para crear temporizador es de tipo ActionListener creamos clase DameLaHora la que implementamos con interfaz AccionListener
      *y por regla esa clase implementa el metodo de interfaz (public void actionPerformed(ActionEvent evento).
      *dentro del metodo se describe el evento:1.creamos objeto de tipo Date que nos muestra hora actual 2.ponemos mensaje que queremos mostrar y hora
      *3.con merodo beet()declase Toolkit asignamos sonido al evento.
      *En clase main instanciamos objeto miReloj de clase Reloj con parametros(intervalo,true) y lo arrancamos con metodo enMarcha
      *para que el programa no muera en instante creamos una ventana donde escribimos "Pulse Aceptar para terminar"
      *para ese fin usamos metodo showMessageDialog de clase JOptionPane con parametros(null,mensaje a mostrar).
      *Con ayuda del metodo exit() de clase System(parametro 0)salimos del programa.
      */
      package poo29;
      import javax.swing.*; //contiene clase JOptionPane
      import java.awt.event.*; //contiene interfaz ActionListener
      import java.util.*; //contiene clase Date
      import javax.swing.Timer; // importamos clase Timer para evitar confusion(hay varios clases Timer pertenecientes a diferentes paquetes)
      import java.awt.Toolkit; // importamos clase Toolkit de paquete java.awt
      public class PruebaTemporizador2 {
      public static void main(String[] args) {
      Reloj miReloj=new Reloj(3000,true);
      miReloj.enMarcha(); // ponemos en marcha reloj usando el metodo enMarcha
      JOptionPane.showMessageDialog(null,"Pulse Aceptar para terminar"); //para que programa no pare antes de tiempo
      System.exit(0); //instruccion de salir de programa
      }
      }
      class Reloj{
      public Reloj(int intervalo,boolean sonido){
      this.intervalo=intervalo;
      this.sonido=sonido;
      }
      public void enMarcha(){
      ActionListener oyente=new DameLaHora2();
      Timer temporizador=new Timer(intervalo,oyente); //elaboramos temporizador
      temporizador.start(); //arrancamos temporizador
      }
      private int intervalo;
      private boolean sonido;
      private class DameLaHora2 implements ActionListener{ //clase interna
      @Override
      public void actionPerformed(ActionEvent evento) {
      Date ahora=new Date();
      System.out.println("Te doy la hora cada 3 segundos"+ahora);
      if(sonido==true){
      Toolkit.getDefaultToolkit().beep();
      }
      } //fin de clase interna

      }
      }

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

    Excelente ejemplo se entiende el concepto de las clases internas.

  • @raulaponte6536
    @raulaponte6536 4 роки тому

    Eres un Dios de la enseñanza

  • @albertochen4819
    @albertochen4819 8 років тому +33

    Tremendo beep, he saltado del susto xD

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

    Excelente explicación y ejemplo, todo un maestro, muchas gracias Juan, saludos desde México. :)

  • @OscarGN-p8n
    @OscarGN-p8n 3 роки тому

    Excelente profesor, lo sigo desde hace años y la verdad no deja de sorprenderme en sus videos, solo me resta decirle gracias !!

  • @compartelo007
    @compartelo007 7 років тому +2

    Genialmente explicado como siempre, lástima que a estas alturas de curso no se me acaba de meter en la cabeza la POO y me cueste mucho adivinar/crear el código que tu después escribes.

  • @kidhwolf
    @kidhwolf 4 роки тому +5

    7:30 BRUJERIA, ESTO ES BRUJERIA, JAVA ES DEMASIADO PODEROSO

    • @sindyisaza1785
      @sindyisaza1785 4 роки тому

      jajajaja yo tambien me quedé así, qué grandioso :)

  • @manuelelpro7646
    @manuelelpro7646 5 років тому +7

    Eres un grande!

  • @ignaciocarrasco9692
    @ignaciocarrasco9692 10 місяців тому

    Qué maravilla de vídeo

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

    Gracias profe! es un lio barbaro jeje, pero sigo adelante =)

  • @davideduardovillanuevacuad6410
    @davideduardovillanuevacuad6410 4 роки тому +2

    Grande Juan!!! indiscutiblemente tienes un don para la pedadogia que no es facil y mas aun por videos.
    Consulta para quien pueda responderme, saben donde puedo practicar? hay alguna pagina donde me permita ejercitar todo los visto hasta ahora?

  • @briancodos
    @briancodos 6 років тому +40

    "En la cuidad de mi corazón, le haré una estatua en el barrio de la programación" Xd!!! :v

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

    Le voy a crear un altar, lleno de veladoras, increíble no puedo creer lo mucho que he aprendido, muchísimas gracias

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

    En el caso de Linux MInt no reproduce sonido pero eso se debe a las preferencias de sonido al saltar una ventana de advertencia, emergencia, error etc, solo es cuestión de colocar sonido en esa parte, me imagino que los usuarios de escritorio plasma (KDE) les dará un sonido por default, interesante seria poder colocar un sonido propio que uno desee y no el del sistema operativo.

  • @wageningen.
    @wageningen. Рік тому

    Juan Juan eres el number one one

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

    hay algo que me confunde en la clase reloj en el metodo constructor @CARMEN BÁEZ CARACOL coloca el parametro sonido como final, sin embargo funciona aunque cambie el valor

  • @ArmanGO-Oficial
    @ArmanGO-Oficial 3 роки тому

    Tengo una pregunta, porque si coloco la instrucción del metodo Toolkit.getDefaultToolkit().beep(); En el main no me emite el sonido a diferencia que colocándolo dentro del metodo public void actionPerformed(ActionEvent e) {}?

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

    Hola. Gracias por todo el conocimiento transmitido. Las retrollamadas mencionadas en 3:39 ¿en que vídeo del curso se pueden estudiar?

  • @lcva
    @lcva 6 років тому +4

    A mí tampoco me funcionaba el beep con windows 10. Era porque tenía desactivados los sonidos del sistema. Me fuí a sonido y en la pestaña sonidos activé en combinación de sonidos, predeterminado de windows.

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

    En linux mint el Toolkit no me emite ningún sonido. No se si será por alguna configuración mía o es por Java. Ya lo investigaré. Lo comento por si a alguien también le ocurre.

    • @everabarcacalderon6107
      @everabarcacalderon6107 9 років тому

      +Bart Clavero Ibarra me ha sucedido lo mismo, ya sabes la respuesta?

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

      Todavía no pero me imagino que la cosa tendrá que ver con el driver de sonido que tengamos seleccionado en linux. Hay dos tipos de drivers para audio en linux, Alsa y Pulse.

    • @titoperas3308
      @titoperas3308 9 років тому

      +Bart Clavero Ibarra Ahora tengo curiosidad, sigues teniendo el mismo problema??

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

      +Bart Clavero Ibarra Ubuntu y me pasa lo mismo.

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

      A mi tampoco me reproduce ningún sonido, uso mint y tengo los sonidos activados en la configuración :( Alguien tiene alguna solución?

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

    Buenos días, consulta. Tiene curso de spring boot?

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

    Hola Juan, me gustaría preguntarte si sabes de alguna web o libro donde se hable de patrones de diseño. Por que me parece que es importante tener un buen diseño antes de tratar implementar nada ¿no?. ¿O vas a explicarlo más adelante? Gracias por todo. A ver si llegamos a hacer todo el curso.

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

      Paul Cano Voy a explicarlo más adelante. Como es un curso que comienza desde 0 (pensado para gente que no sabe programar en ningún lenguaje) en mi humilde opinión hablar de patrones antes de ponernos a programar no es muy estimulante. Pero lo veremos. En cuanto a libros que hablen de ello, la verdad no conozco ninguno. Yo de patrones solo tengo apuntes de universidad. Un saludo

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

      Yo tampoco es que sepa mucho. En la universidad, lo máximo que hice fue un Busca Minas. Pero recuerdo que mi profesor nos aconsejaba que no estaba demás saberse Patrones de diseño en un futuro. Si lo vas a explicar más adelante, estupendo. Muchas gracias por contestar. Un saludo.

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

    Una pregunta ¿ Por qué no se puede llamar el método beep() directamente ? Por ejemplo : ToolKit.Beep() .

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

      Tengo 1100 vídeos en el canal (me resulta imposible acordarme del código). Pruébalo y si funciona, perfecto. En programación "siempre hay varios caminos que te llevan a Roma" y yo no tomo siempre el más corto. Un saludo!

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

      @@pildorasinformaticas Ok, mucha gracias por tomarte el tiempo de responder. Saludos.

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

    Hola Juan queria preguntale lo siguiente: cuando escribo la siguiente instrucción import javax.swing.Timer; a los efectos de evitar el conflicto. eclipse me dice que Timer no es accesible debido a una restriccion en la libreria , le pregunto como podría solucionar este problema

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

      Mira a ver si se trata de el mismo error que comenta este compañero (pero con la librería Timer). Pincha aquí: www.pildorasinformaticas.com/archivos/java/JOptionPane_problema.jpg
      Un salduo!

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

      Muchas Gracias Juan. Ojala y podamos conocernos cuando visite a mi hijo que está viviendo en Madrid. Un Abrazo

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

    Hola juan, sigo tu curso de java java desde el primer video y hasta este punto tenia actividades para practicar por mi cuenta ya que estoy haciendo un modulo superior de Desarroyo Aplicaciones Web. El caso es que no profundizan tanto java y yo quiero aprender mas y se que haciendo actividades que te planteen un problemas te ayuda a aprender. El caso es que queria preguntarte si sabes de alguna paguina donde me pueda descargar actividades para reforzar lo aprendido.
    enhorabuena por el canal me ha ayudado un monton!!

  • @audiomotivaciones8675
    @audiomotivaciones8675 4 роки тому

    gracias por la clase

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

    hola profesor... desde ya gracias nuevamente...lo único que no me quedo bien claro es cuando elegir crear clases internas o crear métodos de acceso setters y getters ... espero ver la luz pronto!

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

      Poco a poco... Una clase interna la crearás cuando tengas dos clases que tengan una estrecha relación entre sus métodos y sus campos. En este escenario casi siempre necesitamos que los métodos de una clase y otra puedan acceder a los campos de cada una de las clases. También decirte que la mayoría de las veces hay alternativas a la hora de crear el programa para prescindir de las clases internas, pero el código se complica y alarga. En este sentido las clases internas vinieron para simplificar el código. Un saludo!!

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

      gracias-!!!

  • @10sword01
    @10sword01 4 роки тому +2

    Salto un error en:
    private class DameLaHora2 implements ActionListener{
    public void actionPerformed(ActionEvent evento){}
    pero se soluciona importando:
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;

    • @alanyanse8848
      @alanyanse8848 4 роки тому

      Me pasó igual y eso que había importado el paquete awt completo

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

    Buen ejemplo. Gracias

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

    cambiaría algo si le quitamos el private a las clases internas?

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

    Pregunta... vengo siguiendo el tutorial desde el inicio. Porque no generas los metodos setters y getters de manera automatica mediante el source??

    • @pildorasinformaticas
      @pildorasinformaticas  9 років тому +19

      Sebas Casca Hola !! Porque no es un curso de IDE sino de Java. Es muy posible que haya gente desarrollando con bloc de notas. Un saludo

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

    Buen dia profe! le hago una consulta muy basica... en todos los programas que creamos anteriormente la instrucción system.out.printl se encontraba en el metodo Main, sin embargo en este caso, se encuentra dentro de la clase (o mas bien del método). Mi pregunta es porqué lo programamos esta sentencia de esta manera? Gracias y saludos!

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

      Hola !! La instrucción de imprimir en consola (System.out.println) puede ir colocada donde quieras o donde lo necesites. No es obligatorio que vaya siempre en el main. El método main, tal y como se explica en el curso, es el método desde el que se inician todas las aplicaciones de Java (casi todas). Como aún vas por el vídeo 35 y estás en los comienzos, todos los programas que se han hecho hasta este punto son extremadamente sencillos y no tienen casi métodos aparte del main. Observarás, a medida que avances en el curso, como los programas pueden tener multitud de métodos y clases y colocarás en cada uno de ellos lo que necesites.
      Un saludo!!

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

      Gracias Profe, ahora si entendi. Voy de a poco. Llegare hasta el final! todos los dias estoy de 4 a 5 horas mirando sus videos, practicando en Eclipse... Gracias infinitas!!!!!

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

    Hola buenas! Tengo una pregunta que quizás sea absurda, puede que esté despistado pero, ¿por qué en este segundo ejemplo no hemos necesitado implementar actionListener?

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

      pero si esta implementado! es la clase damehora2

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

    y si creas una clase interna dentro de la clase interna DameLaHora2 seguiría pudiendo acceder a las variables sonido e intervalo? o habría que crear los correspondientes getters?

  • @bastianmardonez7470
    @bastianmardonez7470 4 роки тому +2

    Una duda, al momento de instanciar la clase Reloj, también se estaría instanciando la clase DameLaHora2?

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

      No recuerdo ya el código de este vídeo (hace tiempo que lo hice) pero no. Que la clase sea interna no implica que se esté instanciando por instanciar la clase que la envuelve. Un saludo!

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

    y me sale este error
    The type Reloj.DameLaHora2 must implement the inherited abstract method
    ActionListener.actionPerformed(ActionEvent)

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

      También me salía ese error, lo solucioné aplicando la sugerencia de Eclipse de crear el método que aparece allí para después borrarlo, luego me señaló que había una llave de más.

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

    Profe no entiendo la sintaxis de la instrucción Toolkit.getDefaultToolkit().beep(); Entiendo que está utilizando el método estático de toolkit llamado getdefault y creo yo que hasta ahí da como resultado el sonido por defecto del sistema operativo y luego se reproduce con el método beep. No sé si estoy equivocado, Java permite ejecutar 2 métodos de esa manera?

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

      Hola !! Sí, Java permite este tipo de encadenamiento de métodos al igual que ocurre con otros lenguajes. El método que reproduce el sonido es beep(). getDefaultToolkit lo que hace es obtener los diferentes componentes nativos del sistema operativo, entre ellos el sonido. O sea, que estás bien encaminado con lo que dices. Un saludo!!

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

    Hola. Cuando añado la sentencia para hacer sonar el "beep" con cada refresco del contador, la ventana del JOptionPane me parpadea medio segundo. Concretamente, en ese medio segundo pasa a verse en el modo oscuro en el que tengo configurado el Windows 10. El IDE que utilizo es el Eclipse. ¿A alguien más le pasó algo parecido y tiene idea de cuál es el motivo? Gracias.

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

    buen dia prof. Juan, estoy realizando este curso, y hasta ahora todo muy bien, pero en esta leccion y la anterior me da un error, a pesar que he copiado las lineas identicas a como ud las tiene... eso con la finalidad de verificar si la forma como yo la habia hecho estaba mal... mi pregunta con que eclipse trabaja ud y la version, yo baje el eclipse Mars Release (4.5.2)

  • @blopa.e
    @blopa.e 3 роки тому

    De que manera puedo hacer que suene un sonido personalizado?

  • @fabricadelexito1496
    @fabricadelexito1496 7 років тому +2

    hola juan, tengo una duda desde muy atras y es con los paquetes, he seguido el curso con netbeans y todo bien pero para cada practica tengo que crear nuevos proyectos, por que si creo una nueva clase y aunque este en paquete distinto y ejecuto el programa en el play solo se me ejecuta un solo main, por ejemplo en la practica temporizador me salio bien pero cree una nueva clase en paquete distinto y la llame temporizador2 y cuando ejecuto lo que sucede es que se ejecuta el main de temporizador osea el primer ejemplo que creamos

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

      Cuando creas una clase en un paquete distinto ¿importas la clase en los otros paquetes para poder utilizarla?

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

      no, no la importo, solo la creo y listo, me dijeron en un foro que en netbeans hay que crear proyectos nuevos cada ves que vay a realizar una practica diferente, pero no se si sera cierto, y tengo un recuerdo de hace mucho que vi que alguien cambiaba desde netbeans que cambiaba la clase que se ejecutabab, creo que debe ser una diferencia entre netbeans y eclipse, me intirga

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

    hola, me podria ayuudar como validar que solo ingrese letras.

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

      +juan baque Hola !! Echa un vistazo en la API a la clase StringUtils. esta clase tiene un método static isNumeric, que evalúa si un String es numérico o no

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

      Muchas gracias

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

    Buenas noches, Juan, no me explico porque no me suena, si lo he hecho igual que tu, no tengo desactivado el sonido, ni nada de eso, funcionan correctamente, pero no consigo hacer que suene cada vez que enseña la hora por pantalla. Qué podría ser?. gracias.-

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

      Algún fallo que no ves (suele ocurrir) o que el beep de tu ordenador no funciona. Puedes copiar y pegar todo tu código por aquí para que yo u otra persona podamos comprobar si hay errores. Un saludo!

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

      @@pildorasinformaticas
      import javax.swing.*;
      import java.awt.event.*;
      import java.util.*;
      import javax.swing.Timer;
      import java.awt.Toolkit;
      public class PruevaTemporizador2 {
      public static void main(String[] args) {
      // TODO Auto-generated method stub
      Reloj mireloj=new Reloj ();
      mireloj.enMarcha(3000,true);
      JOptionPane.showMessageDialog(null, "Pulsa la Tecla para Terminar");

      System.exit(0);
      }
      }
      class Reloj{

      public void enMarcha(int intervalo, final boolean sonido){
      class DamelaHora2 implements ActionListener{
      public void actionPerformed(ActionEvent evento){
      Date ahora= new Date();
      System.out.println("Te pongo la hora cada 3 sg.: "+ ahora);
      if(sonido){
      Toolkit.getDefaultToolkit().beep();
      }
      }
      }
      ActionListener oyente=new DamelaHora2();
      Timer mitemporizador=new Timer(intervalo,oyente);
      mitemporizador.start();
      }

      }

    • @antoniol.9340
      @antoniol.9340 5 років тому

      ​@@carmen7598. Saludos. Primeramente comentar que esta estructura de código creo que pertenece a un vídeo posterior (aunque no estoy seguro lo comento por si alguien trató de interpretar infructuosamente las líneas de código comparándolas con las del vídeo).
      En segundo lugar, he probado el código que ha dejado escrito y los pitidos se emiten correctamente, en mi caso, una máquina Ubuntu 18.04. Siendo que el código no presenta problemas en la consecución de los fines requeridos para este vídeo, no sería arriesgado pensar que el problema tenga que ver con la configuración (no sé cuál) de su equipo.

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

      @@antoniol.9340 hay algo que me confunde en la clase reloj en el metodo constructor Carmen coloca el parametro sonido como final, sin embargo funciona aunque cambie el valor

    • @jmcastineira1
      @jmcastineira1 4 роки тому

      @@carmen7598 Hola, buenas tardes,
      Igual ya pasó mucho tiempo, copié tu código tal cual esta en tu comentario, lo pegué en mi PC y si me emite sonido. Debe ser, como comenta el profesor Juan, un problema con el sonido de tu equipo. Que tengas un excelente día.
      Saludos,

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

    Eso, es como si fueran clases heredadas?

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

    Una pregunta fuera de contexto cuando implementamos una interfaz Jefes por decirlo asi y esta extiende de Trabajador es obligatorio que mi clase que implementa jefes lleve tambien los metodos abstractos de la interfaz trabajador o solo de la misma jefes, Saludos Ingeniero y un agradecimiento por sus cursos de antemano!

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

    ¿Podriamos decir que con las clases internas también estamos heredando? Porque igual así, podemos hacer herencia “múltiple” de forma enmascarada, ya que, la clase interna no tiene que extender pero podríamos extender de otra clase externa a la clase interna. ¿Se podría?

    • @aaronmaiden3606
      @aaronmaiden3606 Рік тому +1

      un objeto de la clase interna no podría usar los métodos de la clase que la contiene, pero sí los atributos

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

      @@aaronmaiden3606 ok , muchas gracias.

  • @oscarrodriguez-yu5ki
    @oscarrodriguez-yu5ki 2 роки тому +2

    Dejo un pequeño aporte para los que usan linux y no les suene el sonido.
    Tienen que poner a correr el modulo pcspkr
    Con el siguiente comando:
    sudo modprobe pcspkr
    Solo lo probre en distros basadas en ubuntu asi que no se si sirva en otras distros.

    • @Jorge.A.P.
      @Jorge.A.P. Рік тому

      yo uso linux y me ha funcionado a la primera

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

    gracias por los tutos he quiero preguntarle la clase DameLaHora eclipse me la marca como error y no he podido ejecutar el codigo.espero su respusta, gracias...

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

      Si no me enseñas tu código imposible que te de mi respuesta. Copia y pega por aquí todo tu código para ver cuál es el error. Un saludo!!

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

    quite el System.exit(0): e igual me cerro el programa al pulsar el boton del message dialog. para que es System.exit? realmente se necesita en este ejercicio?

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

      +jerry ponce No recuerdo el código de este vídeo, pero si lo quitas y funciona igual no hará falta entonces. System.exit(0) hace que el flujo de ejecución salga del programa. Un saludo!!

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

      Gracias por la respuesta. Y Gracias por la ayuda que das con tus videos

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

      +jerry ponce Sin el System.exit(0) no se a ti pero a mi me tarda como 1 segundo o 2 en acabar la ejecución con lo que ese segundo o dos cuenta para el total de tiempo que ha estado el programa en ejecución.

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

      mmm! interesante lo que dices, en el mio no note mucho tiempo en cerrarse sin el system.exit pero lo voy a hacer con ambos para checar la diferencia, Gracias.

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

    Buen Día Juan, me surge una inquietud, ¿por que una clase interna No static no puede crear métodos staticos únicamente solo cuando la clase interna sea static? gracias :)

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

      Me vas a disculpar pero no entiendo la pregunta. Intenta formularla de otra forma. Un saludo

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

    Muchas gracias

  • @Elcrack158
    @Elcrack158 Місяць тому +1

    7/11/24 19:35

  • @lial2011
    @lial2011 7 років тому +2

    Mi estimado amigo, primero para felicitarte por el exelente trabajo que estas realizando, y con otra inquietud trabajo con Netbeans en un sistema Windows 8.1 y la novedad que tengo es que no me suena el pitido, he buscado en foros y no encuentro la solucion, sabes cual podria ser el problema? sigo al pie todos tus videos, un Saludo.

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

      Pues no tengo idea la verdad. Debería de sonar sin problemas... Es raro.

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

      tengo 8.1 y estamos iguales :'( pero porlomeno eso es solo en 8.1 y ya sabemos como hacer el codigo gracias a Juan

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

      Tengo windows 8.1 y si reproduce el sonido... obviamente no es el mismo al del video

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

    Hola Juan,
    tengo todo el código implementado correctamente pero la sentencia Toolkit.getDefaultToolkit().beep() no reproduce ningún sonido. He estado inspeccionando mis ajustes de sonido y no veo nada extraño. Tengo Windows10.
    Un saludo y muchas gracias por tus vídeos, de verdad. Son excelentes!

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

      Gracias por el comentario. Pues la verdad no sabría decirte dónde puede estar el origen del problema... Siento no ser de más ayuda en esta ocasión. Un saludo!!

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

      No te preocupes, seguiré investigando. Muchas gracias por todo!

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

      No me sonaba nada pero al desconectar el HDMI del televisor y al probarlo nuevamente solo en el computador ya me aparece el sonido.

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

    Hola juan fijate que tengo igual el codigo y no me sale ningun sonido porque sera? gracias :)

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

      +sakakibara sarot Ni idea.... puedes copiar y pegar tu código por aquí para que lo pueda comprobar. Un saludo

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

      +sakakibara sarot Igual tienes los sonidos de Windows deshabilitados. Suponiendo que trabajes con Windows.

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

    Es curioso pero el beep no suena ejecutando en Netbeans en un Linux MInt 17 KDE.
    Mañana haré la prueba en Windows pero seguramente si funcione.

    • @pinart65
      @pinart65 5 місяців тому

      Después de 10 años sigue igual. Sin sonar el beep en Linux mint

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

    Buenas tardes
    No he podido descubrir por que me da un error
    public void enMarcha() {
    ActionListener oyente = new DameLaHora();
    Timer miTemporizador = new Timer(intervalo, oyente);
    miTemporizador.start();
    }
    el error me sale en new Timer(intervalo, oyente); y me dice que el constructor es undefined
    lo tengo tal cual lo tienes tu solo cambio el nombre del paquete ya que los estoy separando del resto de ejemplos.
    gracias por tu ayuda

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

      fijate si importaste bien los paquetes java.

  • @forsabarça
    @forsabarça 4 роки тому

    Tengo el costumbre de declarar los atributos justo después de la clase a la que pertenecen.
    En éste caso me marca un error y no entiendo el motivo...

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

    holaaa, me pueden ayudar tengo esta duda desde el vídeo 52,53,54 estamos trabajando con una interfaz predefina ActionListener(); la cual nos obliga a incluir el método ActionPerformed(ActionEvent) que recibe un parámetro llamado ActionEvent, entonces mi pregunta es:
    que papel juega el parámetro de ese método? si a la final cuando lo usamos no le pasamos nada al parámetro, eso se puede hacer?? o es que todavía no entiendo después de tres vídeos :s :s ayuda plis..

    • @1688amg
      @1688amg 7 років тому

      Hola ese parametro queda en oyente.

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

    me recuerda a los Closure en el mundo javascript

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

    Hola, tengo un problema con el código, el OS que estoy usando es Windows 10 y el beep no se reproduce. Tienen idea de que podrá ser? Ya revise la configuración de windows y los sonidos están activados. Desde ya, gracias por la ayuda.
    Dejo el cod:
    package poo;
    import javax.swing.*;
    import java.awt.Toolkit;
    import java.awt.event.*;
    import java.util.*;
    import javax.swing.Timer;
    public class prueba_temporizador {
    public static void main(String[] args) {
    // TODO Auto-generated method stub
    damelahora oyente=new damelahora();
    Timer mi_temporizador=new Timer(5000,oyente);
    mi_temporizador.start();
    JOptionPane.showMessageDialog(null, "pulsa aceptar para detener");
    System.exit(0);
    Toolkit.getDefaultToolkit().beep();
    }
    }
    class damelahora implements ActionListener{
    public void actionPerformed(ActionEvent e){
    Date ahora=new Date();
    System.out.println("Te pongo la hora cada 5 segundos" + ahora);
    }

    }
    Saludos!

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

      Hola !! Debes poner la instrucción del sonido dentro del método actionPerformed para que responda a evento. Tú la tienes en el main. Un saludo!!

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

    Me sucede algo curioso con la interfaz ActionListener porque en el ejemplo anterior no me daba error cuando lo ejecutaba pero ahora si y importe import java.awt.event.ActionEvent; import java.awt.event.ActionListener; y se me quitó el error, no entiendo por qué ahora si me da error y antes no! Es confuso!

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

      +Astrid Bompart Si posteas el codigo en el mensaje ayudaria mucho, aunque es muy probable que sea un error de sintaxis, en error de compilacion en el IDE te puede aparecer un mensaje que te da una idea del error que esta ocurriendo.

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

      +Astrid Bompart A mi me pasaba lo mismo, el error era que habia escrito: import java.awt.Event.*; que te lo importa java si le das enter cuando te salen las sugerencias, y el que debes importar es java.awt.event.*; que no es lo mismo.

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

      +DIego Asekas Eso era lo que estaba pasando!! Gracias por aclarar la duda!!! :)

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

    UNA CONSULTA PILDORASINFORMATICAS, TU COMO TE DISTE CUENTA QUE TENIAS QUE USAR PRIMERO EL METODO getDefaultToolkit() Y RECIEN AHI LLAMAR AL METODO beep() SI AL TRADUCIR TODO NO TE DICEN QUE PARA USAR EL BEEP() ANTES SE TIENE Q USAR EL GETDEFAULTTOOLKIT() ???? EXPLICAAA !!!

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

    alguien sabe donde puedo leer mas sobre este tipo de metodos?:
    Toolkit.getdefaulttoolkit().beep();
    me refiero al tema de que colocamos un . y otro metodo despues de haber usado un metodo

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

    Hola.
    He intentado descubrir por mi cuenta como implementaste la linea de codigo donde se usa beep(); , sin embargo, quize tambien saber como es que se usa el JOptionPane.showInputMessage(); , porque creo es algo similar, y al intentar entender por mi cuenta desde la documentacion de la API de java, no encuentro solucion concreta. Si he visto todos los videos del curso anterior a este, y me es muy dficil entender la diferencia entre extender de una clase abstracta, a solo implementar los metodos que tiene.
    Tambien no entiendo el porque poner Toolkit antes del metodo, ya que no es static, ademas, eso de encadenar los metodos no lo vimos :(, enserio necesito ayuda. Si existe alguna pagina o ducumento o libro donde expliquen eso, lo agradecere mucho, o si pudieras explicarmelo rapido y consciso, tambien :).
    De antemano. Gracias.

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

      +craftiernemesis Hola !! Te pregunto lo siguiente ¿Has mirado en la API de Java el método getDefaultToolkit de la clase Toolkit que se utiliza en la instrucción del vídeo: Toolkit.getDefaultToolkit().beep() ?
      Necesito que me respondas a esto antes de seguir aclarándote la ayuda.
      Un saludo

    • @craftiernemesis
      @craftiernemesis 9 років тому

      Ooo..ya, si es static el metodo, gracias, me habia confundido creyendo que las clases tambien podian serlo, ahora, si no existiera este video u otra informacion, como sabria yo que primero debo crear el Default Toolkit y luego encadenar el beep()? podria incluso encadenar otro recurso de esa clase en la misma linea?.
      Saludos, y gracias por contestar :D.

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

      jejejeje, si no hubiera nadie que te lo explicara sería difícil que tú solo averiguaras tal cosa. Pero para eso están los libros y los cursos... Un saludo !!

  • @josuevargas7709
    @josuevargas7709 4 роки тому

    Una pregunta?? estoy utilizando linux pero en mi caso no sonó, alguien de casualidad que sepa por que?? o si hay otra instrucción que deba poner, les agradecería bastante..

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

    Listo prof. ya solucione el problemita....

  • @franciscojavierramirezhern8588
    @franciscojavierramirezhern8588 5 років тому +6

    La verdad no entendi nada, repetí el vídeo dos veces, pero de igual forma se agradece el contenido. Saludos!

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

    hola no me aclaro con los del punto por ejemplo esta classe Toolkit.getDefaultToolkit().beep(); esta llamado dos methodos a la vez o getDefaultToolkit() es una classe que llama a methodo beep() o getDefaultToolkit() es un methodo que el methodo beep() esta el interior?.
    igual que el System.out.println().
    entiendo los codigos con los puntos de esta manera = e.dame_nombre()+e.dame_sueldo()+e.dame_fecha_contrato()
    se que el primero(System) es una classe y el tercero(println()) un methodo pero el segundo(out) no se si es un methodo o una classe.
    Toolkit.getDefaultToolkit().beep() es diferente de System.out.println(). necesito tu ayuda para superarlo gracias y
    un saludo

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

      Hola, yo también tenía la misma duda pero revisando más abajo tienes una respuesta de Juan al usuario SONGXISTO en el que explica el por qué de esto. Son dos métodos distintos y se puede invocar dos métodos a la vez, la clase simplemente es toolkit.
      Mi duda es, si el método beep() es dinámico (creo que se llamen así los métodos no estáticos), por qué no instancias un objeto de tipo toolkit?
      Toolkit miSonido = new Toolkit();
      miSonido.beep();
      Sin embargo, simplemente al intentar crear en eclipse un objeto de tipo toolkit me da error y me dice que no se puede instanciar un objeto de tipo toolkit. Hasta donde yo se las clases abstractas se pueden instanciar igual que las clases normales, y si no se pueden instanciar, por qué dice la API que tiene un método constructor Toolkit()?
      Creo que tengo un buen jaleo... Espero tu respuesta maestro, muchas gracias por todo.

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

      Todo lo que dices es correcto excepto que las clases abstractas se pueden instanciar. Una clase abstracta no se puede instanciar. Respecto a lo del constructor de la clase abstracta, existe para que lo utilices desde las clases hijas con la instrucción "super". Quizá este link te pueda aclarar algo: es.stackoverflow.com/questions/228/clase-abstracta-con-constructor
      Un saludo!!

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

    Gracias!!! Chévere 🍌2024!!!

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

    Muy buenas Juan tengo un error en el código pero no consigo resolverlo, he hecho 2 veces el vídeo y no consigo resolverlo. Me sale este error:
    Exception in thread "main" java.lang.Error: Unresolved compilation problem:
    No enclosing instance of type PruebaTemporizador2 is accessible. Must qualify the allocation with an enclosing instance of type PruebaTemporizador2 (e.g. x.new A() where x is an instance of PruebaTemporizador2).
    at poo.PruebaTemporizador2.main(PruebaTemporizador2.java:16)
    El error me lo da en la linea que pone:
    Reloj mireloj=new Reloj(3000,true);
    Te pego todo el código por si te lo puedes mirar porque ya no se que puede estar mal, aquí va:
    package poo;
    import javax.swing.*;
    import java.awt.Toolkit;
    import java.awt.event.*;
    import java.util.*;
    import javax.swing.Timer;
    public class PruebaTemporizador2 {
    public static void main(String[] args) {
    // TODO Auto-generated method stub
    Reloj mireloj=new Reloj(5000,true);

    mireloj.enMarcha();
    JOptionPane.showMessageDialog(null, "Pulsa aceptar para terminar");
    System.exit(0);
    }
    class Reloj{
    public Reloj(int intervalo,boolean sonido){
    this.intervalo=intervalo;
    this.sonido=sonido;

    }
    public void enMarcha(){
    ActionListener oyente= new dameLaHora2();
    Timer miTemporizador=new Timer(intervalo,oyente);
    miTemporizador.start();
    }

    private int intervalo;
    private boolean sonido;
    private class dameLaHora2 implements ActionListener{
    public void actionPerformed(ActionEvent evento){
    Date ahora= new Date();
    System.out.println("Te pongo la hora cada 3 sg "+ahora);
    if(sonido){
    Toolkit.getDefaultToolkit().beep();
    }
    }
    }
    }
    }

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

      Tenía el mismo problema. Lo solucione con esto: stackoverflow.com/questions/18690770/no-enclosing-instance-of-type-is-accessible

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

    Ayuda
    no puedo ejecutar porque me sale el error en la clase DameLaHora2:
    package poo;
    import javax.swing.*;
    import java.awt.event.*;
    import java.util.*;
    import javax.swing.Timer;
    import java.awt.Toolkit;
    public class PruebaTemporizador2 {
    public static void main(String[] args) {
    // TODO Auto-generated method stub
    Reloj mireloj=new Reloj(3000, true);
    mireloj.enMarcha();
    JOptionPane.showMessageDialog(null, "Pulse Aceptar para terminar");
    System.exit(0);
    }
    }
    class Reloj{
    public Reloj(int intervalo, boolean sonido){
    this.intervalo=intervalo;
    this.sonido=sonido;
    }
    public void enMarcha(){
    ActionListener oyente=new DameLaHora2();
    Timer mitemporizador=new Timer(intervalo, oyente);
    mitemporizador.start();
    }
    private int intervalo;
    private boolean sonido;
    private class DameLaHora2 implements ActionListener{
    public void actionPerformer(ActionEvent evento){
    Date ahora=new Date();
    System.out.println("Te pongo la hora cada 3 seg " + ahora);
    if(sonido){
    Toolkit.getDefaultToolkit().beep();
    }
    }
    }
    }

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

      Hola !! Error de sintaxis aquí: public void actionPerformer(ActionEvent evento){....
      Es actionPerformed terminado en "d" y no en "r". Todos los IDE marcarán la clase como error. Si dejas el ratón quieto encima del error es fácil de averiguar. Un saludo!!

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

    muy buenas profe no se por que me sale error en private class Damelahora implements ActionListener le doy vueltas y vultas y nada que sale
    package clasesinternas;
    import javax.swing.*;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.util.*;
    import javax.swing.Timer;
    import java.awt.Toolkit;
    /**
    *
    * @author JONATHANP
    */
    public class Temporizador {
    public Temporizador(int intervalo, boolean sonido){
    this.intervalo=intervalo;
    this.sonido=sonido;
    }
    public void iniciar(){
    ActionListener oyente= new Damelahora();
    Timer miTemporizador=new Timer(intervalo,oyente);
    miTemporizador.start();
    }
    private int intervalo;
    private boolean sonido;
    private class Damelahora implements ActionListener{
    public void ActionPerformed(ActionEvent evento){
    Date ahora=new Date();
    System.out.println("LA HORA CADA 5S: "+ahora);
    if(sonido==true){
    Toolkit.getDefaultToolkit().beep();
    }
    }
    }
    }

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

    Es la primera vez que veo eso de poner un metodo detras de otro... Toolkit.getDefaultToolkit().beep();...
    Podrias decirme exactamente que hace?
    Si tiene un nombre o algo?
    He visto todos los videos anteriores y no lo he visto. Talvez se me paso.

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

      A ver asi explicando a grandes rasgos no se muy bien como estara programada la clase abstracta toolkit pero eso de llamar a un metodo detras de otro es simple pongamos un ejemplo tenemos 2 clases(clase A y clase B) y el main .
      Supongamos que en tu clase A creas un metodo que llamas "imprimirmensaje" ( Este metodo lo que hace es imprimir un mensajito por pantalla) y la clase B es una clase con sus variables y un objeto de la clase A (es decir de la clase anterior), suponiendo que en la clase B creas el constructor y los getter y setters(entiendo que sabes lo que son los getters y setters si no dimelo) correctamente si tu ahora en el main creas un objeto de la clase B podrias acceder a la clase A pork la clase B tiene un objeto de la clase A entre sus variables entonces en el main podrias imprimir el mensajito de la clase A usando metodos de la clase B y la A.
      ejemplito
      piblic class ClaseA{
      public void imprimirmensaje(){
      System.out.println("Hola");
      }
      }
      public class ClaseB {
      private claseA var1;
      public ClaseB() { //constructor vacio ya que la claseA no tiene ningun dato al que darle valor
      }
      public claseA getVar1() {// metodo que te devuelve el objeto ClaseA tal cual (conocido como getter)
      return var1;
      }
      }
      public static void main(String[] args){
      ClaseB var2= new ClaseB();// creo el objeto de la clase B y lo instancio
      var2.getVar1().imprimirmensaje(); // aqui solo estas pidiendole a la claseB que te de el objeto claseA que el tiene y despues como ya tienes el objeto claseA le dices que imprima el mensaje llamando al metodo d ela clase A el hace lo mismo pero con metodos mas que hacen otras cosas mas avanzadas que esto.Y estos epuede llevar al extremo de llamar a metodos dentro de metodos y asi infinitas veces xD
      }

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

    Me vas a coger manía Juan...
    Un ejemplar de clase, como comentas en el vídeo, supongo que te refieres a un objeto o instanciación de Clase ¿verdad?

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

    Grande!!

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

    En Linux Mint no me genera el Beep :(

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

      Sí, es una de las cosas que varían dependiendo del sistema operativo. Estoy seguro de que habrá forma de sacar el beep con mint, pero desconozco la forma. Un saludo!!

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

      Hola Heyner,
      En Ubuntu y derivados, por defecto, está desactivado el beep del sistema. De hecho, yo he conseguido sacarlo a través de Runtime en lugar de Toolkit.
      Primero tenemos que asegurarnos que podemos ejecutar un beep en el sistema:
      1.- Instalamos el paquete beep. Para ello abrimos un terminal (ctrl + alt + T) y ejecutamos:
      sudo apt install beep
      2.- A continuación tenemos que cargar el módulo pcspkr. Para ello introducimos en el terminal:
      sudo modprobe pcspkr
      3.- Comprobamos que ya tenemos activado el beep del sistema. En el terminal tecleamos:
      beep
      Si todo ha funcionado correctamente (deberíamos escuchar un beep después de teclear la instrucción), tenemos que modificar el archivo blacklist.conf para que se cargue el módulo pcspkr cada vez que se inicie el sistema:
      1.- Desde el terminal tecleamos:
      sudo gedit /etc/modprobe.d/blacklist.conf
      2.- En el archivo que se abre, buscamos la línea que pone blacklis pcspkr y la comentamos poniendo almohadilla delante (#). Debería quedar algo parecido a esto:
      # ugly and loud noise, getting on everyone's nerves; this should be done by a
      # nice pulseaudio bing (Ubuntu: #77010)
      # blacklist pcspkr
      3.- Guardamos cambios (ctrl + S) y cerramos.
      Finalmente, para que el beep funcione en la aplicación Java que estamos desarrollando, tenemos que utilizar la clase Runtime en lugar de Toolkit. Las líneas de código que sustituyen a Toolkit, quedarían:
      try {
      Runtime.getRuntime().exec("beep");
      } catch (IOException ex) {
      ex.printStackTrace();
      }
      Runtime es una clase que permite interactuar con el sistema dónde está corriendo la aplicación Java. De hecho, cada vez que corremos una aplicación Java, se crea una instancia de esta clase. Con la instrucción getRuntime(), lo que estamos haciendo es llamar a la instancia Runtime actual y con el método exec(String s), ordenamos al sistema que ejecute el comando que le hemos pasado como String (equivaldría a abrir un terminal y ejecutar el comando beep).

  • @ismaelruizranz7799
    @ismaelruizranz7799 4 роки тому

    Maquina

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

    Entendí lo de las clases internas, pero mi duda viene sobre cuando usas el método beep. La cosa es que andaba mirando el método beep y me doy cuenta con que es abstracto y me llega la duda: ¿Cómo lo uso?, me acuerdo de el tema de las clases abstractas y me acordé en especifico que cuando una clase hereda de otra que es abstracta se tiene que cumplir todos los métodos; pero tú solo utilizaste el método beep, y esto no es una clase y me doy cuenta de que usas la siguiente instrucción: Toolkit.getDefaultToolkit().beep(); y me doy cuenta de que cuando pones Toolkit.getDefaultToolkit() pones otro método y eso me causó confusión pero creo que tengo la respuesta.
    Creo que se aplica algo similar a lo de las clases abstractas, en específico lo de que cuando una clase hereda de una clase abstracta esta tiene que sobrescribir sus métodos, y creo que en la parte después de getDefaultToolkit cuando pones el otro método el método beep hereda de getDefaultToolkit.
    Pero la pregunta de el millón ¿ cuándo veo una clase en la api de java que tenga algo así: public abstract void beep (), cómo la utilizo?
    Sé que es difícil responder a tantos comentarios y darnos "Píldoras informáticas" todos los días; pero aprovecho para darte las gracias a tus excelentes videos.
    PD: Creo que voy a terminar con sobredosis de "Píldoras informáticas" xD

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

      Manuelito jajajajajaja tómate un descanso. Debes utilizar el método como otro cualquiera. Que sea abstracto indica que está sin implementar (solo declarado) y que obligatoriamente la clase a la que pertenece (en este caso Toolkit) es obligatoriamente abstracta.
      getDefaultToolkit nos devuelve un objeto Toolkit. ¿Qué es un objeto Toolkit? El sistema de ventanas donde se está ejecutando la aplicación. Lo que hace es obtener tu objeto Toolkit gracias a getDefaultToolkit y aplicar después sobre él un beep (sonido)
      Saludos

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

      +Manuelito Creo que la clase que hizo (PruebaTemporizador2) no implemento o heredo de la clase toolkit solo utilizo el metodo beep( ) por eso no tuvo que cumplir como dices con los otros metodos. Creo yo que por ahi va la duda.

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

      debes retroceder los videos por que se puede importar todo el paquete .*; o uno en especifico java.awt.Toolkit;

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

      @@pildorasinformaticas quizá mi pregunta sea muy tonta pero como puede hacer el método beep() algo si es abstracto, es decir no tiene código dentro ?

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

    HOLA añado una corrección que me surgio quizas sea por la version actual de java por que todo el código es = como lo dijo el profesor salvo que al momento de escribir la clase DameLaHora e instanciar la misma me pide que la clase si o si sea static si no no me deja dejo el codigo a continuación al programa lo estoy corriendo con INTELLIJ
    package poo;
    import javax.swing.*;
    import javax.swing.Timer;
    import java.awt.event.*;
    import java.util.*;
    public class Prueba_temporizador {
    public static void main(String[] args) {
    DameLaHora oyente = new DameLaHora();
    //ActionListener oyente = new DameLaHora;
    Timer miTemporizador = new Timer(5000,oyente);
    miTemporizador.start();
    JOptionPane.showMessageDialog(null,"pulsa aceptar para detener");
    System.exit(0);
    }
    static class DameLaHora implements ActionListener{
    @Override
    public void actionPerformed(ActionEvent e) {
    Date ahora = new Date();
    System.out.println("Te pongo la hora cada 5 segundos: " + ahora);
    }
    }
    }

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

    WAOO! EL MIO SONABA COMO SI CON UN CUBIERTO LE DES UN GOLPECITO A UNA COPA... AHHH!!.. QUE BONITO!!!

  • @danielhernandez5401
    @danielhernandez5401 4 роки тому

    04/05/2020

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

    Hola que tal!!! Pregunta si aquí estamos agregando la Clase Abstracta Toolkit por que no se hizo un extends a la Clase DamelaHora2() y por que no se agregaron todos los métodos abstractos pertenecientes a la Clase Abstracta Toolkit, aquí solo agregaste Toolkit.GetDefaultToolkit.beep()

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

      Carlos Hernandez Hola !! Hace tiempo que grabé este vídeo y no recuerdo exactamente qué comenté en él. Tendría que verlo entero a no ser que me digas el minuto y segundo exacto donde surge tu duda.
      Pero creo recordar que aquí no heredamos de la clase Toolkit. Si lo hiciéramos, entonces sí tendríamos que sobreescribir todos los métodos de la clase abstracta Toolkit que no son pocos. En el ejemplo creo recordar que nos limitamos a usar la clase Toolkit con la instrucción Toolkit.GetDefaultToolkit.beep(), que para eso están en la API, para utilizarlos.
      Un saludo.

    • @carloshernandez5172
      @carloshernandez5172 10 років тому

      pildorasinformaticas A OK entonces lo que entiendo es que al ser una clase abstracta Toolkit si lo que requiero es ocupar alguno de sus métodos de esta, no necesariamente tengo que extenderla solo tengo que importar la Clase Toolkit a mi clase y llamarla como en tu ejemplo a Toolkit.GetDefaultToolkit.beep().
      Esto es correcto?

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

      Debes importar el paquete. pero no porque sea abstracta, sino porque esto hay que hacerlo siempre que quieras utilizar una clase que no pertenezca al paquete java.lang
      No te confundas con lo siguiente: una cosa es utilizar una clase y otra cosa diferente es heredar de una clase. Si heredas una clase abstracta estás obligado a sobreescribir todos los métodos de la clase, pero si solo la utilizas, no estás obligado a sobreescribir los métodos.
      un saludo

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

    Alguien quien sea tan amable de explicarme, por qué la función actionPerformed(ActionEvent evento) de la clase interna DameLaHora2 se ejecuta, si nunca llamamos a ese método en el código? Porque entiendo todo menos eso :(

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

      si que se ejecuta al instanciar la clase Timer en el segundo parámetro lo estas llamando

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

      A ver si sé responderte: Timer necesita un "oyente" y este oyente es una "instancia de interfaz" tipo ActionListener creada mediante la clase Damelahora2, ya que no se puede instanciar una interfaz directamente.
      Es la clase Timer la que hace uso interno del método "actionPerformed" perteneciente al objeto oyente

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

    Vale siento la pregunta no terminé de ver el vídeo jajaa soy un impaciente, tuve que dejar el vídeo a medias y... en fin fallo mío!!

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

      Pues la primera pregunta de momento no la veo, pero me alegro de que se haya solucionado. Saludos!!

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

      Era sobre implementar ActionListener, pensé que en este caso no íbamos a hacerlo y no entendía por qué, tuve que dejar el vídeo a medias y por eso no llegué a ver que si lo haríamos. Fallo mío soy un impaciente jajaja

  • @LUITEN1
    @LUITEN1 4 роки тому

    26/10/2020

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

    Me sucedio lo mismo que con el video anterior con la clase private class DameLaHora2

  • @jego3189
    @jego3189 4 роки тому

    yo pense q me iva dar error por que me salia siempre ese sonido cuando me salia un error pero asi era el sonidito ese jajajaja me cage

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

    adjunto codigo con comentarios para el que le sirva.... Gracias por la enseñanza Juan
    package v52_v53_interfaces_clases_internas_temporizador;
    import java.awt.Toolkit;
    import java.awt.event.*; //para la interfaz
    import javax.swing.Timer; // para el la clase Timer. CONSTRUIMOS un timer que usa 2 parámetros de tipo tiempo en milise
    //segundos y una interfaz listener.
    //no se importó con * porque java.util tambien tiene una clase timer que es para otras cosas
    //sale error si no se dice cual

    import java.util.*; //para el Date
    import javax.swing.JOptionPane; //para el JOptionPane
    //v53 uso de clase Toolkit que hace una especie de puente entre los recursos del SO y nuestro programa
    import java.awt.Toolkit;
    public class Temporizador {


    public static void main (String[] args){


    //creamos una instancia de la clase Reloj, mi_reloj con los parametros del constructor


    Reloj mi_reloj = new Reloj (5000, true); //cada 5 segundos con sonido en true


    //llamamos al metodo set que consifguró la manera de hacer arrancar el reloj


    mi_reloj.set_temporizador(); //el objeto ejemplar de clase mi reloj y el METODO de la clase Reloj


    //necesitamos mantener el programa en ejecución hasta que querramos con una ventana de JOptionPane.showMessageDialog

    JOptionPane.showMessageDialog(null, "Pulsa Aceptar para Detener"); //el timer se ejecuta hasta que le demos aceptar
    //luego se pasa a System.exit(0); y sale


    System.exit(0); //hace que el programa se detenga, luego de pulsar aceptar, ya que el codigo baja y lo lee


    }



    }



    // Creación de la clase Reloj para hacer clase sobre clase

    class Reloj {


    //declaramos variables private


    private int intervalo; //aqui se almacenan los 5000 milisegundos

    private boolean sonido; //aqui se almacena el true


    //creamos el constructor

    public Reloj (int intervalo, boolean sonido ) {


    this.intervalo = intervalo;

    this.sonido = sonido;


    }



    //creamos un METODO set para configurar el temporizador


    public void set_temporizador(){


    ActionListener listener = new Dame_Hora2(); //instancia de un objeto ActionListener, interfaz, con el constructor de clase
    //dame_hora2, la cual será INTERNA DE LA CLASE RELOJ,
    //SE CONSTRUYE DE ULTIMO



    Timer temporizador = new Timer (intervalo, listener); //instancia del objeto temporizador de la clase Timer
    //con los parametros del intervalo de tiempo y
    //el objeto de la clase interfaz ActionListener



    temporizador.start(); // para que arranque





    }



    //creacion de la clase interna Dame_Hora2 dentro de la clase Reloj


    private class Dame_Hora2 implements ActionListener{ //implementa la intefaz ActionListener



    //creamos el metodo exigido por la interfaz ActionListener que es actionPerformed (ActionEvent e)


    public void actionPerformed(ActionEvent e) {


    Date tiempo_actual = new Date(); //objeto tipo fecha, tiempo_actual


    System.out.println ("La hora actual es cada 7 segundos :" + tiempo_actual);


    //configuramos el BOOLEAN SONIDO

    if (sonido = true) { //la ventaja de la clase interna es acceder a los campos del ejemplar que la contiene
    //en este caso accede a la variable de clase sonido que está fuera de ella pero
    //pertenece a su clase padre contenedora. ahorramos crear set o get para usar esas
    //variables private


    //usamos la herramienta del SO que nos saca el sonido del SO.beep

    Toolkit.getDefaultToolkit().beep();

    }


    }

    }


    }//FIN DE LA CLASE Reloj

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

  • @alphaalfre
    @alphaalfre 2 роки тому +1

    👀

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

    no veo la ventaja de lo que puede aportar tener una clase interna

  • @salvadorsdmb3378
    @salvadorsdmb3378 23 дні тому

    22/11/2024

  • @NelsonTuesta
    @NelsonTuesta 6 років тому +9

    - Hijo, ¿qué has aprendido hoy?
    - Una clase interna es una clase dentro de otra
    :V