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

Поделиться
HTML-код
  • Опубликовано: 9 сен 2024
  • Comenzamos a ver en este vídeo el tema de las clases internas. Para ello utilizamos el ejemplo desarrollado en el vídeo anterior.
    Para más cursos, ejercicios y manuales visita: www.pildorasinf...

Комментарии • 205

  • @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 лет назад +20

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

  • @albertofeng8149
    @albertofeng8149 8 лет назад +32

    Tremendo beep, he saltado del susto xD

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

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

  • @briancodos
    @briancodos 6 лет назад +41

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

  • @estudiantealexherrera1222
    @estudiantealexherrera1222 7 лет назад +5

    Excelente ejemplo se entiende el concepto de las clases internas.

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

      }
      }

  • @manuelelpro7646
    @manuelelpro7646 5 лет назад +7

    Eres un grande!

  • @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 2 года назад

      Yo en el 2021 :'C

    • @kevinjimenez6143
      @kevinjimenez6143 Год назад

      @@dearalex2056 Yo en 2023 XD

    • @FrankIPTek
      @FrankIPTek 6 месяцев назад

      @@kevinjimenez6143 yo en Febrero 2024.🙂

  • @raulaponte6536
    @raulaponte6536 4 года назад

    Eres un Dios de la enseñanza

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

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

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

  • @giorgiechannel4091
    @giorgiechannel4091 5 лет назад

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

  • @audiomotivaciones8675
    @audiomotivaciones8675 4 года назад

    gracias por la clase

  • @ignaciocarrasco9692
    @ignaciocarrasco9692 7 месяцев назад

    Qué maravilla de vídeo

  • @cappy367
    @cappy367 6 лет назад +3

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

  • @adriancordova1618
    @adriancordova1618 3 года назад

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

  • @wageningen.
    @wageningen. Год назад

    Juan Juan eres el number one one

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

  • @ELNIKO16MARI
    @ELNIKO16MARI 3 года назад

    Excelente profesor, lo sigo desde hace años y la verdad no deja de sorprenderme en sus videos, solo me resta decirle 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

  • @franciscojavierramirezhern8588
    @franciscojavierramirezhern8588 5 лет назад +6

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

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

  • @jmansanetperez
    @jmansanetperez 5 лет назад +1

    Muchas gracias

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

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

  • @mauriciopriego1700
    @mauriciopriego1700 3 года назад

    Buen ejemplo. Gracias

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

  • @javiertinajeroolivo9712
    @javiertinajeroolivo9712 3 года назад

    Grande!!

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

  • @mohtadibakali1557
    @mohtadibakali1557 5 лет назад +2

    me recuerda a los Closure en el mundo javascript

  •  7 лет назад +1

    Eso, es como si fueran clases heredadas?

  • @edeciocordero9535
    @edeciocordero9535 8 лет назад +1

    Listo prof. ya solucione el problemita....

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

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

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

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

  • @teldatamcy5656
    @teldatamcy5656 7 месяцев назад

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

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

  • @edeciocordero9535
    @edeciocordero9535 8 лет назад +4

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

    • @andresdiaz1255
      @andresdiaz1255 7 лет назад

      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.

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

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

  • @josedelossantosperezgalvis7609
    @josedelossantosperezgalvis7609 5 лет назад +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  5 лет назад

      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 5 лет назад +1

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

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

  • @elmesiasyourpapi
    @elmesiasyourpapi 6 лет назад

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

  • @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);
    }
    }
    }

  • @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 2 месяца назад

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

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

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

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

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

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

  • @ottonlucena1295
    @ottonlucena1295 10 месяцев назад

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

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

  • @takelberry590
    @takelberry590 Год назад

    ¿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 9 месяцев назад +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 9 месяцев назад

      @@aaronmaiden3606 ok , muchas gracias.

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

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

  • @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) {}?

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

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

  • @joseangeljimenezruiz4934
    @joseangeljimenezruiz4934 7 лет назад +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  7 лет назад +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!!

  • @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 5 лет назад

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

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

  • @outofcontrol1342
    @outofcontrol1342 6 лет назад +1

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

  • @ismaelruizranz7799
    @ismaelruizranz7799 4 года назад

    Maquina

  • @tuercebotasexigente
    @tuercebotasexigente 10 месяцев назад

    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.

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

  • @blopa.e
    @blopa.e 3 года назад

    De que manera puedo hacer que suene un sonido personalizado?

  • @sakakibarasarot77
    @sakakibarasarot77 8 лет назад +1

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

    • @pildorasinformaticas
      @pildorasinformaticas  8 лет назад

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

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

  • @carloshernandez5172
    @carloshernandez5172 9 лет назад +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  9 лет назад

      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 9 лет назад

      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  9 лет назад +4

      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

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

    • @acselblock
      @acselblock 8 лет назад

      fijate si importaste bien los paquetes java.

  • @sare61
    @sare61 7 лет назад +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 7 лет назад +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  7 лет назад +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!!

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

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

  • @sanchezherreraarmandoeduar6631
    @sanchezherreraarmandoeduar6631 3 года назад

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

  • @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 6 лет назад

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

  • @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();
    }
    }
    }
    }

  • @ericklesser8815
    @ericklesser8815 4 года назад

    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

  • @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 6 лет назад

      Hola ese parametro queda en oyente.

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

  • @retomy
    @retomy 7 лет назад +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  7 лет назад +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!!

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

  • @LUITEN1
    @LUITEN1 3 года назад

    26/10/2020

  • @danielhernandez5401
    @danielhernandez5401 4 года назад

    04/05/2020

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

  • @josuevargas7709
    @josuevargas7709 3 года назад

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

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

  • @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 7 лет назад +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).

  • @alphaalfre
    @alphaalfre 2 года назад +1

    👀

  • @lordr021
    @lordr021 4 года назад +1

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

  • @NelsonTuesta
    @NelsonTuesta 6 лет назад +9

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

  • @CRISTIANQUICENOP
    @CRISTIANQUICENOP 11 месяцев назад

  • @issacaguilar961
    @issacaguilar961 3 года назад

    Dia 12 :´C

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

  • @dearalex2056
    @dearalex2056 2 года назад

    F no me salió el beep.

  • @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 4 года назад

      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