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
@pildorasinformaticas3 жыл бұрын
✅✅ ✅ ✅ ✅ 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. 💥💥💥
@davidgjordangj53138 жыл бұрын
genial naciste para enseñar tienes un don de verdad felicidades
@pildorasinformaticas8 жыл бұрын
Gracias !! Un saludo.
@MGGF958 жыл бұрын
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.
@pildorasinformaticas8 жыл бұрын
Gracias a ti por seguirlos. Me alegro de que te gusten. Un saludo!!
@albertofeng81498 жыл бұрын
Tremendo beep, he saltado del susto xD
@leandroviera24294 жыл бұрын
Años siguiéndolo ,con usted aprendí y aprendo aún mucho ,un grande. Saludos desde Colombia.
@kidhwolf4 жыл бұрын
7:30 BRUJERIA, ESTO ES BRUJERIA, JAVA ES DEMASIADO PODEROSO
@sindyisaza17854 жыл бұрын
jajajaja yo tambien me quedé así, qué grandioso :)
@estudiantealexherrera12227 жыл бұрын
Excelente ejemplo se entiende el concepto de las clases internas.
@adriancordova16183 жыл бұрын
Excelente explicación y ejemplo, todo un maestro, muchas gracias Juan, saludos desde México. :)
@briancodos6 жыл бұрын
"En la cuidad de mi corazón, le haré una estatua en el barrio de la programación" Xd!!! :v
@sindyisaza17854 жыл бұрын
Ehh poeta!
@thepipaso80314 жыл бұрын
.
@bigotes20random863 жыл бұрын
.
@CVSELCAPO2 жыл бұрын
calmate romeo que vas a poner a Turing cachondo
@manuelelpro76465 жыл бұрын
Eres un grande!
@Yo-mo5mf9 жыл бұрын
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-mo5mf9 жыл бұрын
/*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 } }
@cappy3676 жыл бұрын
Gracias profe! es un lio barbaro jeje, pero sigo adelante =)
@lcva6 жыл бұрын
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.
@compartelo0077 жыл бұрын
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.
@ignaciocarrasco96926 ай бұрын
Qué maravilla de vídeo
@carlosjorgedemoganda51558 жыл бұрын
Me he incorporado tarde pero voy avanzando. El curso extraordinario. Muchas gracias. De vez en cuando, repito algún video ya pasado para reforzar.
@pildorasinformaticas8 жыл бұрын
+Carlos Jorge De Moganda Gracias por el comentario. me alegro de que te gusten. Repetir vídeo es inevitable con algunos conceptos. Un saludo!!
@dearalex20562 жыл бұрын
Yo en el 2021 :'C
@kevinjimenez6143 Жыл бұрын
@@dearalex2056 Yo en 2023 XD
@FrankIPTek5 ай бұрын
@@kevinjimenez6143 yo en Febrero 2024.🙂
@raulaponte65364 жыл бұрын
Eres un Dios de la enseñanza
@ELNIKO16MARI3 жыл бұрын
Excelente profesor, lo sigo desde hace años y la verdad no deja de sorprenderme en sus videos, solo me resta decirle gracias !!
@giorgiechannel40915 жыл бұрын
Le voy a crear un altar, lleno de veladoras, increíble no puedo creer lo mucho que he aprendido, muchísimas gracias
@audiomotivaciones86754 жыл бұрын
gracias por la clase
@mauriciopriego17003 жыл бұрын
Buen ejemplo. Gracias
@mauriciotorresvblog7 жыл бұрын
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.
@davideduardovillanuevacuad64104 жыл бұрын
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?
@jmansanetperez5 жыл бұрын
Muchas gracias
@wageningen. Жыл бұрын
Juan Juan eres el number one one
@jbg14048 жыл бұрын
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!!
@javiertinajeroolivo97123 жыл бұрын
Grande!!
@10sword014 жыл бұрын
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;
@alanyanse88484 жыл бұрын
Me pasó igual y eso que había importado el paquete awt completo
@jlsdesarrolloweb20145 жыл бұрын
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
@samuelramirez89654 жыл бұрын
Hola. Gracias por todo el conocimiento transmitido. Las retrollamadas mencionadas en 3:39 ¿en que vídeo del curso se pueden estudiar?
@oscarrodriguez-yu5ki2 жыл бұрын
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. Жыл бұрын
yo uso linux y me ha funcionado a la primera
@nicolasespinosa31817 жыл бұрын
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!
@pildorasinformaticas7 жыл бұрын
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!!
@nicolasespinosa31817 жыл бұрын
gracias-!!!
@mohtadibakali15575 жыл бұрын
me recuerda a los Closure en el mundo javascript
@ArmanGO-Oficial3 жыл бұрын
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) {}?
@idhunita3 жыл бұрын
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?
@edeciocordero95358 жыл бұрын
Listo prof. ya solucione el problemita....
@pildorasinformaticas8 жыл бұрын
Perfecto !! Un saludo
@elmesiasyourpapi6 жыл бұрын
cambiaría algo si le quitamos el private a las clases internas?
@washotv94596 жыл бұрын
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!
@paulcano38409 жыл бұрын
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.
@pildorasinformaticas9 жыл бұрын
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
@paulcano38409 жыл бұрын
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?
@edeciocordero95358 жыл бұрын
y me sale este error The type Reloj.DameLaHora2 must implement the inherited abstract method ActionListener.actionPerformed(ActionEvent)
@andresdiaz12557 жыл бұрын
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.e3 жыл бұрын
De que manera puedo hacer que suene un sonido personalizado?
@lial20117 жыл бұрын
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.
@pildorasinformaticas7 жыл бұрын
Pues no tengo idea la verdad. Debería de sonar sin problemas... Es raro.
@miguelpegero52197 жыл бұрын
tengo 8.1 y estamos iguales :'( pero porlomeno eso es solo en 8.1 y ya sabemos como hacer el codigo gracias a Juan
@facundoflores21646 жыл бұрын
Tengo windows 8.1 y si reproduce el sonido... obviamente no es el mismo al del video
@luisromeroreyes98106 жыл бұрын
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 !!!
@bartclavero45489 жыл бұрын
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.
@everabarcacalderon61079 жыл бұрын
+Bart Clavero Ibarra me ha sucedido lo mismo, ya sabes la respuesta?
@bartclavero45489 жыл бұрын
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.
@titoperas33088 жыл бұрын
+Bart Clavero Ibarra Ahora tengo curiosidad, sigues teniendo el mismo problema??
@jesusn75768 жыл бұрын
+Bart Clavero Ibarra Ubuntu y me pasa lo mismo.
@COMINO6287 жыл бұрын
A mi tampoco me reproduce ningún sonido, uso mint y tengo los sonidos activados en la configuración :( Alguien tiene alguna solución?
@songxisto32688 жыл бұрын
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?
@pildorasinformaticas8 жыл бұрын
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!!
@edeciocordero95358 жыл бұрын
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)
@rodrigocantorvasquez32013 жыл бұрын
prueba importando la clase java.awt.Toolkit
@jonathanvanegas1009 жыл бұрын
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 :)
@pildorasinformaticas9 жыл бұрын
Me vas a disculpar pero no entiendo la pregunta. Intenta formularla de otra forma. Un saludo
@ismaelruizranz77994 жыл бұрын
Maquina
@yourfavouriteman4 жыл бұрын
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...
@tuercebotasexigente9 ай бұрын
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.
@sebascasca42729 жыл бұрын
Pregunta... vengo siguiendo el tutorial desde el inicio. Porque no generas los metodos setters y getters de manera automatica mediante el source??
@pildorasinformaticas9 жыл бұрын
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
@teldatamcy56566 ай бұрын
Gracias!!! Chévere 🍌2024!!!
@bastianmardonez74704 жыл бұрын
Una duda, al momento de instanciar la clase Reloj, también se estaría instanciando la clase DameLaHora2?
@pildorasinformaticas4 жыл бұрын
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!
@josetens8 жыл бұрын
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?
@federicocapucci4 жыл бұрын
pero si esta implementado! es la clase damehora2
@josedelossantosperezgalvis76095 жыл бұрын
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
@pildorasinformaticas5 жыл бұрын
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!
@josedelossantosperezgalvis76095 жыл бұрын
Muchas Gracias Juan. Ojala y podamos conocernos cuando visite a mi hijo que está viviendo en Madrid. Un Abrazo
@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); } } }
@ottonlucena12959 ай бұрын
Buenos días, consulta. Tiene curso de spring boot?
@tusseriesfavoritas99787 жыл бұрын
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..
@1688amg6 жыл бұрын
Hola ese parametro queda en oyente.
@comcamlafamilia67557 жыл бұрын
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...
@pildorasinformaticas7 жыл бұрын
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!!
@marcosdeharo62376 жыл бұрын
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!
@pildorasinformaticas6 жыл бұрын
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!!
@marcosdeharo62376 жыл бұрын
No te preocupes, seguiré investigando. Muchas gracias por todo!
@yeisonjaramillo21845 жыл бұрын
No me sonaba nada pero al desconectar el HDMI del televisor y al probarlo nuevamente solo en el computador ya me aparece el sonido.
@franciscojavierramirezhern85885 жыл бұрын
La verdad no entendi nada, repetí el vídeo dos veces, pero de igual forma se agradece el contenido. Saludos!
@designanimation8 жыл бұрын
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!
@pildorasinformaticas8 жыл бұрын
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!!
@designanimation8 жыл бұрын
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!!!!!
@titoperas33088 жыл бұрын
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?
@pildorasinformaticas8 жыл бұрын
+AhoraVengo Correcto !! De momento manía no.... ;)
@titoperas33088 жыл бұрын
Gracias!
@fabricadelexito14967 жыл бұрын
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
@pildorasinformaticas7 жыл бұрын
Cuando creas una clase en un paquete distinto ¿importas la clase en los otros paquetes para poder utilizarla?
@fabricadelexito14967 жыл бұрын
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
@wcharlesmt51345 жыл бұрын
Una pregunta ¿ Por qué no se puede llamar el método beep() directamente ? Por ejemplo : ToolKit.Beep() .
@pildorasinformaticas5 жыл бұрын
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!
@wcharlesmt51345 жыл бұрын
@@pildorasinformaticas Ok, mucha gracias por tomarte el tiempo de responder. Saludos.
@bartclavero45489 жыл бұрын
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Ай бұрын
Después de 10 años sigue igual. Sin sonar el beep en Linux mint
@montoyahurtado8 жыл бұрын
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
@acselblock8 жыл бұрын
fijate si importaste bien los paquetes java.
@ericklesser88154 жыл бұрын
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
@craftiernemesis8 жыл бұрын
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.
@pildorasinformaticas8 жыл бұрын
+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
@craftiernemesis8 жыл бұрын
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.
@pildorasinformaticas8 жыл бұрын
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 !!
@joseangeljimenezruiz49347 жыл бұрын
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!
@pildorasinformaticas7 жыл бұрын
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!!
@LUITEN13 жыл бұрын
26/10/2020
@danielhernandez54014 жыл бұрын
04/05/2020
@biela28207 жыл бұрын
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(); } } } } }
@diegofernandorodriguezorej8296 жыл бұрын
Tenía el mismo problema. Lo solucione con esto: stackoverflow.com/questions/18690770/no-enclosing-instance-of-type-is-accessible
@juanbaque86788 жыл бұрын
hola, me podria ayuudar como validar que solo ingrese letras.
@pildorasinformaticas8 жыл бұрын
+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
@juanbaque86788 жыл бұрын
Muchas gracias
@sakakibarasarot778 жыл бұрын
Hola juan fijate que tengo igual el codigo y no me sale ningun sonido porque sera? gracias :)
@pildorasinformaticas8 жыл бұрын
+sakakibara sarot Ni idea.... puedes copiar y pegar tu código por aquí para que lo pueda comprobar. Un saludo
@antonioj3588 жыл бұрын
+sakakibara sarot Igual tienes los sonidos de Windows deshabilitados. Suponiendo que trabajes con Windows.
@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?
@aaronmaiden36068 ай бұрын
un objeto de la clase interna no podría usar los métodos de la clase que la contiene, pero sí los atributos
@takelberry5908 ай бұрын
@@aaronmaiden3606 ok , muchas gracias.
@outofcontrol13426 жыл бұрын
WAOO! EL MIO SONABA COMO SI CON UN CUBIERTO LE DES UN GOLPECITO A UNA COPA... AHHH!!.. QUE BONITO!!!
@jesusn75768 жыл бұрын
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?
@pildorasinformaticas8 жыл бұрын
+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!!
@jesusn75768 жыл бұрын
Gracias por la respuesta. Y Gracias por la ayuda que das con tus videos
@Mareares8 жыл бұрын
+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.
@jesusn75768 жыл бұрын
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.
@joselosddrd7 жыл бұрын
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.
@ampuerensefumaflowers41376 жыл бұрын
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 }
@retomy7 жыл бұрын
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(); } } } }
@pildorasinformaticas7 жыл бұрын
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!!
@josuevargas77093 жыл бұрын
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..
@rodrigocantorvasquez32013 жыл бұрын
pruba importando la libreria java.awt.Toolkit
@sanchezherreraarmandoeduar66313 жыл бұрын
Me sucedio lo mismo que con el video anterior con la clase private class DameLaHora2
@josetens8 жыл бұрын
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!!
@pildorasinformaticas8 жыл бұрын
Pues la primera pregunta de momento no la veo, pero me alegro de que se haya solucionado. Saludos!!
@josetens8 жыл бұрын
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
@astridbompart33948 жыл бұрын
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!
@jesusn75768 жыл бұрын
+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.
@diloes8 жыл бұрын
+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.
@astridbompart33948 жыл бұрын
+DIego Asekas Eso era lo que estaba pasando!! Gracias por aclarar la duda!!! :)
@manuelito21729 жыл бұрын
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
@pildorasinformaticas9 жыл бұрын
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
@jesusn75768 жыл бұрын
+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_wav6 жыл бұрын
debes retroceder los videos por que se puede importar todo el paquete .*; o uno en especifico java.awt.Toolkit;
@gbrl103 жыл бұрын
@@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 ?
@jego31894 жыл бұрын
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
@sare617 жыл бұрын
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
@AlbertoGS19907 жыл бұрын
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.
@pildorasinformaticas7 жыл бұрын
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!!
@carmen75985 жыл бұрын
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.-
@pildorasinformaticas5 жыл бұрын
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!
@carmen75985 жыл бұрын
@@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.93405 жыл бұрын
@@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.
@jlsdesarrolloweb20145 жыл бұрын
@@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
@jmcastineira14 жыл бұрын
@@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,
@jonathanpluas78678 жыл бұрын
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(); } } } }
@pildorasinformaticas8 жыл бұрын
Porque ActionPerformed va en minúscula: actionPerformed. Un saludo!!
@luisivanburgaacuna81593 жыл бұрын
@@pildorasinformaticas me salvo gracias saludos desde Perú
@alphaalfre2 жыл бұрын
👀
@CRISTIANQUICENOP10 ай бұрын
@issacaguilar9613 жыл бұрын
Dia 12 :´C
@heynerhumanez44067 жыл бұрын
En Linux Mint no me genera el Beep :(
@pildorasinformaticas7 жыл бұрын
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!!
@emiliofz7 жыл бұрын
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).
@carloshernandez51729 жыл бұрын
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()
@pildorasinformaticas9 жыл бұрын
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.
@carloshernandez51729 жыл бұрын
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?
@pildorasinformaticas9 жыл бұрын
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
@oriaj20002 жыл бұрын
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
@lordr0214 жыл бұрын
no veo la ventaja de lo que puede aportar tener una clase interna
@NelsonTuesta6 жыл бұрын
- Hijo, ¿qué has aprendido hoy? - Una clase interna es una clase dentro de otra :V
@dearalex20562 жыл бұрын
F no me salió el beep.
@edgardohernandez62994 жыл бұрын
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 :(
@quiqueruiz58364 жыл бұрын
si que se ejecuta al instanciar la clase Timer en el segundo parámetro lo estas llamando
@ThePeropaco4 жыл бұрын
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