Crear el proyecto
- Creamos un nuevo proyecto en NetBeans de nombre Reloj.
- Una vez creado agregamos al paquete 'reloj' un JFrame dando clic derecho sobre el paquete > Nuevo > Formulario JFrame y le ponemos como nombre 'Principal'.
- Agregamos al frame una etiqueta que ocupe todo el espacio y posteriormente le cambiamos el nombre por 'lbHora'.
- Cambiamos el formato de tal manera que se ajuste a lo que deseamos ver en pantalla (tamaño de letra, tipo, estilo, alineación, color, etc)
Definir el comportamiento
- Nos vamos a la vista de Código Fuente del frame 'Principal' y en la definición de la clase indicamos que implementa la interfaz Runnable, esto debido a que tenemos que trabajar con hilos si queremos que nuestro reloj muestre la hora en tiempo real.
public class Principal extends javax.swing.JFrame implements Runnable{...
- Al realizar lo anterior el compilador nos indicará que es necesario implementar el método run(), así que lo agregamos de la siguiente manera:
public void run(){
...
}
- Ahora agregamos algunas variables a nivel de clase que nos vayan almacenando los valores principales de nuestra aplicación tal como se muestra a continuación:
String hora,minutos,segundos,ampm;
Calendar calendario;
Thread h1;
* El objeto calendario nos ayudará a realizar las operaciones necesarias con las horas. Debemos importar el paquete java.util.Calendar para evitar errores al definir este objeto.
* El hilo h1 nos ayudará a actualizar la hora en tiempo real.
- Posteriormente agregaremos el método calcular() en el cual realizaremos los cálculos de la hora, tal como se muestra a continuación:
public void calcula () {
Calendar calendario = new GregorianCalendar();
Date fechaHoraActual = new Date();
calendario.setTime(fechaHoraActual);
ampm = calendario.get(Calendar.AM_PM)==Calendar.AM?"AM":"PM";
if(ampm.equals("PM")){
int h = calendario.get(Calendar.HOUR_OF_DAY)-12;
hora = h>9?""+h:"0"+h;
}else{
hora = calendario.get(Calendar.HOUR_OF_DAY)>9?""+calendario.get(Calendar.HOUR_OF_DAY):"0"+calendario.get(Calendar.HOUR_OF_DAY);
}
minutos = calendario.get(Calendar.MINUTE)>9?""+calendario.get(Calendar.MINUTE):"0"+calendario.get(Calendar.MINUTE);
segundos = calendario.get(Calendar.SECOND)>9?""+calendario.get(Calendar.SECOND):"0"+calendario.get(Calendar.SECOND);
}
* En este método lo primero que hacemos es inicializar el objeto calendario, posteriormente obtenemos la fecha y hora actuales en el objeto fechaHoraActual y establecemos dichos valores al objeto calendario. Posteriormente verificamos si la hora es AM o PM y lo almacenamos en el objeto ampm, en caso de ser PM restamos 12 horas (para que en caso de ser las 23 hrs nos lo indique en formato 9 pm). En caso de que la hora sea menor a 10 le concatenamos un cero a la izquierda para que se muestre la hora en 2 dígitos, lo mismo con los minutos y segundos.
- Una vez que tenemos lo anterior, agregamos el siguiente código al método run()...
public void run(){
Thread ct = Thread.currentThread();
while(ct == h1) {
calcula();
lbHora.setText(hora + ":" + minutos + ":" + segundos + " "+ampm);
try {
Thread.sleep(1000);
}catch(InterruptedException e) {}
}
}
- Ahora agregamos al constructor de la clase la inicialización del hilo y le indicamos que el frame sea visible en pantalla.
h1 = new Thread(this);
h1.start();
setLocationRelativeTo(null);//para centrar la ventana
setVisible(true);
- Por último, creamos una nueva instancia del frame Principal en la clase Reloj, dentro del método main...
public static void main(String[] args) {
new Principal();
}
Es importante tomar en cuenta que la hora que se muestra es la definida en el sistema operativo.
Puedes descargar el código fuente del proyecto de este tutorial desde el siguiente enlace...
¿Alguna duda o algo qué decir? Deja tu comentario. Saludox.
Cual es el password?????
ResponderBorrarEl password es:
ResponderBorrarhttp://monillo007.blogspot.com
Saludox.
Esta muy bien explicado y es exactamente lo que estaba buscando.
ResponderBorrarMuchas Gracias!!! :-D
Esta muy bien gracias viejo por la ayuda
ResponderBorrarBueno quise descargar el codigo fuente... y no me permite...
ResponderBorrarQué tal,
ResponderBorrarInténtalo con este link: http://min.us/mb8WyfN#3o
Saludox.
amigo unA CONSULTA Y COMO LO ARIAS EN EL PROGRAMA JCREATOR .. E TRATADO PERO NO PUEDO .. SI PUDIERAS AYUDARME CHEBRE. Y DE ANTEMANO TE LO AGRADESCO..
ResponderBorrarQué tal,
ResponderBorrarTe comento que el código es el mismo, solo debes adaptarlo a tu IDE, te recomiendo descargar el proyecto para que visualices todo y lo puedas ejecutar.
Saludos.
chebre gracias .. si funciono :D ..
ResponderBorrarhola q tal ... amigo otra consulta a nosotros nos dan y plantilla q es esta :
ResponderBorrarimport java.awt.event.*;
import java.awt.*;
import javax.swing.*;
public class Aa extends JApplet implements ActionListener {
// Declaración de variables
//-------------------------------------------------------------------
// Crea la interfaz gráfica de usuario
public void init() {
}
//--------------------------------------------------------------------
// Procesa eventos de tipo ActionEvent
public void actionPerformed( ActionEvent e ){
}
}
pero al querer pasarlo a esta plantilla me confunde .. no se como ponerlo, pero tambien quisiera pasarlo a un JLabel para poder ponerlo en diferentes paneles .. y poder capturar la hora actual cuando ejecute un proceso, de ante mano te agradesco tu ayuda :D ..
Muchas gracias!!! funciono muy bien!
ResponderBorrarde donde puedo descargar el codigo del reloj no lo encuentro
ResponderBorrarAquí el enlace:
ResponderBorrarhttps://min.us/mb8WyfN#3o
Saludos.
VIEJO MUCHAS GRACIAS DEBERIA HACERLOS MAS SEGUIDO ESTA MUY BIEN PARA NOSOTROS LOS QUE TODAVIA NO SABEMOS MUCHO DE ESTO
ResponderBorrarMuchas gracias por el ejercicio, me fue de gran ayuda para entender mas sobre Hilos e implementarlos en proyectos anteriores.
ResponderBorrarGustavo:
ResponderBorrarMonillo muchas gracias funciona perfecto.
Tengo la sgte consulta:
En un formUser tengo que mostrar la hora en tiempo real para eso hice la clase Reloj con el codigo que pusiste lo que ho he podido es pasarle a label del FormUser la hora del objeto de tipo Reloj. Si me puede orientar en como pasar la hra a ese nuevo formulario te agradezco inmensamente.
Nuevamente gracias
que bueno q hayan personas q nos puedan ayudar muxas gracias!!!
ResponderBorrarexcelente si funciona!!!...amigo quiero q me ayudes con un codigo para cedula son 10 digitos..please gracias
ResponderBorrarhuy parce que facil lo hizo ...lo unico que me parece raro y es por qeu no lo he visto es lo de los hilos...pero ya investigare...muchas gracias
ResponderBorrarQué tal Juan,
ResponderBorrarAquí en el blog hay tutoriales sobre hilos por si te quieres dar una vuelta:
Link
Saludos.
gracias me parece muy bueno esta full fino era lo que estaba buscando un millon de gracias
ResponderBorrarsaludos alguien me podria decir como hacer un reloj
ResponderBorrarpero con check box en un jframe
saludos y gracias.
Holle amigo como le modifico el codigo a reloj si quiero que me muestre por ej. en ves de 05:00 pm que me muestre las 17:00 pm. porfa dime en donde y como.
ResponderBorrarAlguien sabe si se le puede introducir Audio?
ResponderBorrarPor ejemplo que reprodujera un tono cada hora con .wap
Gracias
disculpa mi ignorancia soy nuevo en esto pero me gustaria saber como le haria para cuando le de detener al tiempo y luego volver a iniciar no me tire error... de antemano muchas gracias por los datos.
ResponderBorrarExcelente, bueno y sencillo gracias por el aporte...
ResponderBorrarNo puedo deescargar tu ejemplo desde la página
ResponderBorrarhttp://i.minus.com/1358604796/sed8MtPG8swQOxBc2wH-ew/dcb9fq/Reloj19.07.2011.rar
Tienes algún otro sitio. SkyDrive, Dropbox, GoogleDrive, Box, MegaCloud, MediaFire, DepositFile, etc
Gracias
Amigo puedes volver a subir el link por favor ya no funciona :(
ResponderBorrarIntenta con este enlace:
ResponderBorrarhttps://min.us/mb8WyfN#3o
Saludos.
Amigo puedes volver a subir el link por favor ya no funciona
ResponderBorrarmira ninguna link sirve... no puedo descargar nada de la pagina, me puedes ayudar te lo agradecería men
ResponderBorrarQué tal Omar,
ResponderBorrarAlgo está pasando con el servidor de alojamiento que estoy utilizando, en un rato más arreglo los links para que no tengas problemas.
Saludos.
Listo Omar, ya puedes descargar el proyecto.
ResponderBorrargracias pana x resolver el problema y ya descargue el proyecto
ResponderBorrarExcelente aportación, la descargue y adapte a mi proyecto y funciona muy bien, muchas gracias. Ojala y también lo hagas en vídeo tutoriales.
ResponderBorrarGracias, andubo impecable
ResponderBorrarhola Luis ningun link sirve... no se puede descargar el prog, me puedes ayudar te lo agradecería mucho, gracias
ResponderBorrarFelicidades, muy buena explicación. Gracias por este tipo de aportes.
ResponderBorrarHola, que tal
ResponderBorrarPrimero y antes que nada quiero felicitarte por tu blog, es muy bueno
En segunda, en la Universidad me dejaron un proyecto en el cual tengo que desarrollar un sistema para el control de vuelos de un aeropuerto, para el cual quería utilizar un reloj, utilice el código que tu desarrollaste, pero quisiera ver si me pudiera ayudar en que por medio de un spinner o de un boton, la hora se acelere, para que vaya mas rápido el tiempo, que el usuario decida que tan rápido quiere que avance la hora, espero que haya podido explicarme, espero puedas escribirme a mi correo alesx.rdz@hotmail.com, de antemano muchas gracias
Buen día
Muy bueno bien explciado
ResponderBorrarMuy buen aporte amigo es lo que estaba buscando me va servir mucho para mi proyecto =D
ResponderBorrarMuchas Gracias Estoy Desarrollando un Pequeño Punto de Venta.
ResponderBorrarY Queria que mi Ventana Tuviera un Reloj de Esta Manera.
Gracias.
Excelente trabajo
ResponderBorrarExelente aportacion, es justamente lo que estaba buscando, (y)
ResponderBorrarExcelente tutorial, pero necesito otra ayuda, he tratado de hacer lo mismo con javafx scene builder 1.1 y netbeans, pero no me funciona, seria posible que nos dieras un ejemplo como se implementaria en esta herramienta de javafx 1.1 scen builder?
ResponderBorrargracias felicitaciones.
en javafx estoy tratando de implementar un sistema de punto de venta, pero incursione en javafx, y me he estancado que no hay un componente donde pueda colocar la hora y fecha, toca hacer el codigo, pero segui tus instrucciones con java y me funciono pero no he podido enlazar la vista con con el contrallador (javafx 1.1. scene builder)
ResponderBorrarte agradeceria mucho si me ayudaras.
Yesid Calle
Hola, perdona mi insistencia, pero me gustaria que me ayudaras de como implementar tu reloj en javaFX, cuando creo un proyecto javafx FXML application, el me crea, el reloj.java, el controlador.java y la vista relovista.fxml, y no se como implementarlo.
ResponderBorrarPor favor ayudame, no puedo crer que una aplicacion como esta no tenga un control de reloj, o si exite no se donde encontrarlo, por lo menos en Netbeans hay una paleta de Edinsoncor que existe un digitalclock. y estoy completmenta varado.
hola muy buen tutorial me puedes ayudar o donde puedo descargar el código tengo un problema
ResponderBorrarHola!!! muy buena explicacio! muchas gracias!!..saludos! :D
ResponderBorrarMuuuuchas gracias men me sirvió a la primera :)!!
ResponderBorrarGracias, necesitaba hacer una toolbar con fecha y hora, solo habia que realizar el codigo dentro de un jpanel en lugar de jframe, y añadir algo de codigo para mostrar la fecha. Ah!, y en lugar de obtener la fecha del sistema necesitaba la del servidor mysql. Tu codigo me fue de gran ayuda.
ResponderBorrarmuchas gracias hermano, voy a probar a ver que tal. saludos.
ResponderBorrarhola, gracias por compartir coodigo, estoy hacieeendo una maaquina del tiempo y me sirviooo para repasar java X3, pues casi no lo puedo recordar bien. T-T
ResponderBorrarMe sirvió mucho gracias
ResponderBorrarel código genera un erro en el Date de:
ResponderBorrarDate fechaHoraActual = new Date();
calendario.setTime(fechaHoraActual);
lo arregle sustituyendo esa dos lineas con:
calendario.setTime(java.util.Date.from(Instant.now()));
Buenas Noches, el código me sirve bastante solo que me di cuenta de un detalle
ResponderBorrarcuando son 12 PM muestra
que son 00 PM.
Mi pregunta es un error o tiene alguna llave de más abierta?
ya resolví, edite una linea y le agregue unas lineas de código y listo resuelto el detalle, esto fue lo que hice:
Borrarint h=calendario.get(Calendar.HOUR_OF_DAY);
if(h>12)
{
h=h-12;
}else
h=h-0;
hora = h>9?""+h:"0"+h;
Excelente lo del error de 12 pm es algo a tener en cuenta
BorrarExelente , corre a la primera !
ResponderBorrarGracias!