No video

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

  Рет қаралды 108,841

pildorasinformaticas

pildorasinformaticas

10 жыл бұрын

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

Пікірлер: 205
@pildorasinformaticas
@pildorasinformaticas 3 жыл бұрын
✅✅ ✅ ✅ ✅ Todos mis cursos gratuitos 👉 www.pildorasinformaticas.es ✅✅ ✅ ✅ ✅ 🚀 ¿Quieres ejercicios? ¿Quieres más temario? 👉 www.pildorasinformaticas.es/course/java-tutorizado/🚀 🚀 ¿Quieres que te resuelva las dudas de Java? 👉 www.pildorasinformaticas.es/course/java-tutorizado/ 🚀 💥💥💥 Siempre seguiré subiendo cursos gratuitos por aquí. Gracias a todos por seguirme. 💥💥💥
@davidgjordangj5313
@davidgjordangj5313 8 жыл бұрын
genial naciste para enseñar tienes un don de verdad felicidades
@pildorasinformaticas
@pildorasinformaticas 8 жыл бұрын
Gracias !! Un saludo.
@MGGF95
@MGGF95 8 жыл бұрын
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 жыл бұрын
Gracias a ti por seguirlos. Me alegro de que te gusten. Un saludo!!
@albertofeng8149
@albertofeng8149 8 жыл бұрын
Tremendo beep, he saltado del susto xD
@leandroviera2429
@leandroviera2429 4 жыл бұрын
Años siguiéndolo ,con usted aprendí y aprendo aún mucho ,un grande. Saludos desde Colombia.
@kidhwolf
@kidhwolf 4 жыл бұрын
7:30 BRUJERIA, ESTO ES BRUJERIA, JAVA ES DEMASIADO PODEROSO
@sindyisaza1785
@sindyisaza1785 4 жыл бұрын
jajajaja yo tambien me quedé así, qué grandioso :)
@estudiantealexherrera1222
@estudiantealexherrera1222 7 жыл бұрын
Excelente ejemplo se entiende el concepto de las clases internas.
@adriancordova1618
@adriancordova1618 3 жыл бұрын
Excelente explicación y ejemplo, todo un maestro, muchas gracias Juan, saludos desde México. :)
@briancodos
@briancodos 6 жыл бұрын
"En la cuidad de mi corazón, le haré una estatua en el barrio de la programación" Xd!!! :v
@sindyisaza1785
@sindyisaza1785 4 жыл бұрын
Ehh poeta!
@thepipaso8031
@thepipaso8031 4 жыл бұрын
.
@bigotes20random86
@bigotes20random86 3 жыл бұрын
.
@CVSELCAPO
@CVSELCAPO 2 жыл бұрын
calmate romeo que vas a poner a Turing cachondo
@manuelelpro7646
@manuelelpro7646 5 жыл бұрын
Eres un grande!
@Yo-mo5mf
@Yo-mo5mf 9 жыл бұрын
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 жыл бұрын
/*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 } }
@cappy367
@cappy367 6 жыл бұрын
Gracias profe! es un lio barbaro jeje, pero sigo adelante =)
@lcva
@lcva 6 жыл бұрын
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 жыл бұрын
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.
@ignaciocarrasco9692
@ignaciocarrasco9692 6 ай бұрын
Qué maravilla de vídeo
@carlosjorgedemoganda5155
@carlosjorgedemoganda5155 8 жыл бұрын
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 5 ай бұрын
@@kevinjimenez6143 yo en Febrero 2024.🙂
@raulaponte6536
@raulaponte6536 4 жыл бұрын
Eres un Dios de la enseñanza
@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 !!
@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
@mauriciopriego1700
@mauriciopriego1700 3 жыл бұрын
Buen ejemplo. Gracias
@mauriciotorresvblog
@mauriciotorresvblog 7 жыл бұрын
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.
@davideduardovillanuevacuad6410
@davideduardovillanuevacuad6410 4 жыл бұрын
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?
@jmansanetperez
@jmansanetperez 5 жыл бұрын
Muchas gracias
@wageningen.
@wageningen. Жыл бұрын
Juan Juan eres el number one one
@jbg1404
@jbg1404 8 жыл бұрын
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!!
@javiertinajeroolivo9712
@javiertinajeroolivo9712 3 жыл бұрын
Grande!!
@10sword01
@10sword01 4 жыл бұрын
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
@jlsdesarrolloweb2014
@jlsdesarrolloweb2014 5 жыл бұрын
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
@samuelramirez8965
@samuelramirez8965 4 жыл бұрын
Hola. Gracias por todo el conocimiento transmitido. Las retrollamadas mencionadas en 3:39 ¿en que vídeo del curso se pueden estudiar?
@oscarrodriguez-yu5ki
@oscarrodriguez-yu5ki 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
@nicolasespinosa3181
@nicolasespinosa3181 7 жыл бұрын
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 жыл бұрын
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 жыл бұрын
gracias-!!!
@mohtadibakali1557
@mohtadibakali1557 5 жыл бұрын
me recuerda a los Closure en el mundo javascript
@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) {}?
@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?
@edeciocordero9535
@edeciocordero9535 8 жыл бұрын
Listo prof. ya solucione el problemita....
@pildorasinformaticas
@pildorasinformaticas 8 жыл бұрын
Perfecto !! Un saludo
@elmesiasyourpapi
@elmesiasyourpapi 6 жыл бұрын
cambiaría algo si le quitamos el private a las clases internas?
@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!
@paulcano3840
@paulcano3840 9 жыл бұрын
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 жыл бұрын
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 жыл бұрын
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.
6 жыл бұрын
Eso, es como si fueran clases heredadas?
@edeciocordero9535
@edeciocordero9535 8 жыл бұрын
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.
@blopa.e
@blopa.e 3 жыл бұрын
De que manera puedo hacer que suene un sonido personalizado?
@lial2011
@lial2011 7 жыл бұрын
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 6 жыл бұрын
Tengo windows 8.1 y si reproduce el sonido... obviamente no es el mismo al del video
@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 !!!
@bartclavero4548
@bartclavero4548 9 жыл бұрын
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 жыл бұрын
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 8 жыл бұрын
+Bart Clavero Ibarra Ahora tengo curiosidad, sigues teniendo el mismo problema??
@jesusn7576
@jesusn7576 8 жыл бұрын
+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?
@songxisto3268
@songxisto3268 8 жыл бұрын
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 жыл бұрын
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!!
@edeciocordero9535
@edeciocordero9535 8 жыл бұрын
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)
@rodrigocantorvasquez3201
@rodrigocantorvasquez3201 3 жыл бұрын
prueba importando la clase java.awt.Toolkit
@jonathanvanegas100
@jonathanvanegas100 9 жыл бұрын
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
@ismaelruizranz7799
@ismaelruizranz7799 4 жыл бұрын
Maquina
@yourfavouriteman
@yourfavouriteman 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...
@tuercebotasexigente
@tuercebotasexigente 9 ай бұрын
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.
@sebascasca4272
@sebascasca4272 9 жыл бұрын
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 жыл бұрын
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
@teldatamcy5656
@teldatamcy5656 6 ай бұрын
Gracias!!! Chévere 🍌2024!!!
@bastianmardonez7470
@bastianmardonez7470 4 жыл бұрын
Una duda, al momento de instanciar la clase Reloj, también se estaría instanciando la clase DameLaHora2?
@pildorasinformaticas
@pildorasinformaticas 4 жыл бұрын
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!
@josetens
@josetens 8 жыл бұрын
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 4 жыл бұрын
pero si esta implementado! es la clase damehora2
@josedelossantosperezgalvis7609
@josedelossantosperezgalvis7609 5 жыл бұрын
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 жыл бұрын
Muchas Gracias Juan. Ojala y podamos conocernos cuando visite a mi hijo que está viviendo en Madrid. Un Abrazo
@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); } } }
@ottonlucena1295
@ottonlucena1295 9 ай бұрын
Buenos días, consulta. Tiene curso de spring boot?
@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.
@comcamlafamilia6755
@comcamlafamilia6755 7 жыл бұрын
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 7 жыл бұрын
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!!
@marcosdeharo6237
@marcosdeharo6237 6 жыл бұрын
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 жыл бұрын
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.
@franciscojavierramirezhern8588
@franciscojavierramirezhern8588 5 жыл бұрын
La verdad no entendi nada, repetí el vídeo dos veces, pero de igual forma se agradece el contenido. Saludos!
@designanimation
@designanimation 8 жыл бұрын
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 жыл бұрын
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 жыл бұрын
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!!!!!
@titoperas3308
@titoperas3308 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?
@pildorasinformaticas
@pildorasinformaticas 8 жыл бұрын
+AhoraVengo Correcto !! De momento manía no.... ;)
@titoperas3308
@titoperas3308 8 жыл бұрын
Gracias!
@fabricadelexito1496
@fabricadelexito1496 7 жыл бұрын
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
@wcharlesmt5134
@wcharlesmt5134 5 жыл бұрын
Una pregunta ¿ Por qué no se puede llamar el método beep() directamente ? Por ejemplo : ToolKit.Beep() .
@pildorasinformaticas
@pildorasinformaticas 5 жыл бұрын
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.
@bartclavero4548
@bartclavero4548 9 жыл бұрын
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 Ай бұрын
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
@acselblock
@acselblock 8 жыл бұрын
fijate si importaste bien los paquetes java.
@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
@craftiernemesis
@craftiernemesis 8 жыл бұрын
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 8 жыл бұрын
+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 8 жыл бұрын
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 8 жыл бұрын
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 жыл бұрын
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 жыл бұрын
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!!
@LUITEN1
@LUITEN1 3 жыл бұрын
26/10/2020
@danielhernandez5401
@danielhernandez5401 4 жыл бұрын
04/05/2020
@biela2820
@biela2820 7 жыл бұрын
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
@juanbaque8678
@juanbaque8678 8 жыл бұрын
hola, me podria ayuudar como validar que solo ingrese letras.
@pildorasinformaticas
@pildorasinformaticas 8 жыл бұрын
+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 жыл бұрын
Muchas gracias
@sakakibarasarot77
@sakakibarasarot77 8 жыл бұрын
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.
@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 8 ай бұрын
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 8 ай бұрын
@@aaronmaiden3606 ok , muchas gracias.
@outofcontrol1342
@outofcontrol1342 6 жыл бұрын
WAOO! EL MIO SONABA COMO SI CON UN CUBIERTO LE DES UN GOLPECITO A UNA COPA... AHHH!!.. QUE BONITO!!!
@jesusn7576
@jesusn7576 8 жыл бұрын
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 жыл бұрын
+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 жыл бұрын
Gracias por la respuesta. Y Gracias por la ayuda que das con tus videos
@Mareares
@Mareares 8 жыл бұрын
+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.
@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 жыл бұрын
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 жыл бұрын
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!!
@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..
@rodrigocantorvasquez3201
@rodrigocantorvasquez3201 3 жыл бұрын
pruba importando la libreria java.awt.Toolkit
@sanchezherreraarmandoeduar6631
@sanchezherreraarmandoeduar6631 3 жыл бұрын
Me sucedio lo mismo que con el video anterior con la clase private class DameLaHora2
@josetens
@josetens 8 жыл бұрын
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 жыл бұрын
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
@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 жыл бұрын
+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!!! :)
@manuelito2172
@manuelito2172 9 жыл бұрын
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 жыл бұрын
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 ?
@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
@sare61
@sare61 7 жыл бұрын
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 жыл бұрын
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 жыл бұрын
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!!
@carmen7598
@carmen7598 5 жыл бұрын
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,
@jonathanpluas7867
@jonathanpluas7867 8 жыл бұрын
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(); } } } }
@pildorasinformaticas
@pildorasinformaticas 8 жыл бұрын
Porque ActionPerformed va en minúscula: actionPerformed. Un saludo!!
@luisivanburgaacuna8159
@luisivanburgaacuna8159 3 жыл бұрын
@@pildorasinformaticas me salvo gracias saludos desde Perú
@alphaalfre
@alphaalfre 2 жыл бұрын
👀
@CRISTIANQUICENOP
@CRISTIANQUICENOP 10 ай бұрын
@issacaguilar961
@issacaguilar961 3 жыл бұрын
Dia 12 :´C
@heynerhumanez4406
@heynerhumanez4406 7 жыл бұрын
En Linux Mint no me genera el Beep :(
@pildorasinformaticas
@pildorasinformaticas 7 жыл бұрын
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 жыл бұрын
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).
@carloshernandez5172
@carloshernandez5172 9 жыл бұрын
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 жыл бұрын
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
@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
@lordr021
@lordr021 4 жыл бұрын
no veo la ventaja de lo que puede aportar tener una clase interna
@NelsonTuesta
@NelsonTuesta 6 жыл бұрын
- Hijo, ¿qué has aprendido hoy? - Una clase interna es una clase dentro de otra :V
@dearalex2056
@dearalex2056 2 жыл бұрын
F no me salió el beep.
@edgardohernandez6299
@edgardohernandez6299 4 жыл бұрын
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 жыл бұрын
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
Curso Java. Interfaces y clases internas. Clases internas II. Vídeo 54
12:46
pildorasinformaticas
Рет қаралды 79 М.
Curso Java. Aplicaciones gráficas  Swing I. Vídeo 55
26:15
pildorasinformaticas
Рет қаралды 259 М.
路飞太过分了,自己游泳。#海贼王#路飞
00:28
路飞与唐舞桐
Рет қаралды 39 МЛН
Amazing weight loss transformation !! 😱😱
00:24
Tibo InShape
Рет қаралды 67 МЛН
The Fastest Way to Loop in Python - An Unfortunate Truth
8:06
mCoding
Рет қаралды 1,4 МЛН
Every Single LINQ Extension Method With Examples | .NET & C# Essentials
42:28
Curso Java  Eventos X. Eventos de foco. Vídeo 74
24:17
pildorasinformaticas
Рет қаралды 68 М.
Curso Java. Aplicaciones gráficas. Swing II. Colocando el Frame. Vídeo 56
17:38
Interfaces funcionales y funciones flecha en Java moderno
7:34
Curso Java. Eventos I. Vídeo 65
21:43
pildorasinformaticas
Рет қаралды 138 М.
Compilers, How They Work, And Writing Them From Scratch
23:53
Adam McDaniel
Рет қаралды 136 М.
Turns out REST APIs weren't the answer (and that's OK!)
10:38
Dylan Beattie
Рет қаралды 129 М.
路飞太过分了,自己游泳。#海贼王#路飞
00:28
路飞与唐舞桐
Рет қаралды 39 МЛН