0% encontró este documento útil (0 votos)
206 vistas6 páginas

Timer

Este documento presenta dos clases Java para crear un reloj digital. La clase RelojModeloSwing usa el timer javax.swing.Timer para actualizar la hora cada segundo, mientras que RelojModeloUtil usa el timer java.util.Timer. Ambas clases notifican los cambios a las clases RelojVisual que actualizan la interfaz gráfica. Finalmente, las clases AppletRelojSwing y AppletRelojUtil muestran ejemplos de uso en applets.
Derechos de autor
© Attribution Non-Commercial (BY-NC)
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como TXT, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
206 vistas6 páginas

Timer

Este documento presenta dos clases Java para crear un reloj digital. La clase RelojModeloSwing usa el timer javax.swing.Timer para actualizar la hora cada segundo, mientras que RelojModeloUtil usa el timer java.util.Timer. Ambas clases notifican los cambios a las clases RelojVisual que actualizan la interfaz gráfica. Finalmente, las clases AppletRelojSwing y AppletRelojUtil muestran ejemplos de uso en applets.
Derechos de autor
© Attribution Non-Commercial (BY-NC)
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como TXT, PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 6

/* * Javier Abelln, 10 de octubre de 2004 * RelojModelo.java */ package chuidiang.ejemplos.reloj; import import import import import java.util.Observable; java.util.Observer; javax.swing.

Timer; java.awt.event.*; java.util.Date;

/** * Modelo de reloj utilizando javax.swing.Timer. */ public class RelojModeloSwing extends Observable { /** * Lanza un timer cada segundo, avisando a los observadores de este * modelo del cambio. */ public RelojModeloSwing() { Timer timer = new Timer (1000, new ActionListener () { public void actionPerformed(ActionEvent e) { setChanged(); notifyObservers (new Date()); } }); timer.start(); } /** * Main para prueba de esta clase. */ public static void main (String [] args) { RelojModeloSwing modelo = new RelojModeloSwing(); modelo.addObserver(new Observer() { public void update (Observable unObservable, Object dato) { System.out.println (dato); } }); // Espera de 10 segundos para que el programa no termine // inmediatamente try { Thread.currentThread().sleep (10000); } catch (Exception e) { } } }

/* * Javier Abelln, 10 de octubre de 2004 * reloj.java */ package chuidiang.ejemplos.reloj; import import import import import import import import javax.swing.JLabel; java.util.Observer; java.util.Observable; java.util.Date; java.awt.Dimension; javax.swing.SwingUtilities; javax.swing.SwingConstants; java.text.SimpleDateFormat;

/** * Visual para mostrar el reloj. * Es un JLabel que recibe un Observable de cambio de fecha. */ public class RelojVisual extends JLabel { /** * Se pasa un observable de fecha/hora. El Observable debe pasar un * Date a esta visual para que la presente. */ public RelojVisual(Observable modelo) { // La fecha/hora se pinta en el centro de este JLabel this.setHorizontalAlignment((SwingConstants.CENTER)); // Suscripcin al cambio de fecha/hora en el modelo recibido. modelo.addObserver (new Observer () { // Mtodo al que el Observable llamar cuando se cambie // la fecha/hora. El arg se espera que sea un Date. public void update(java.util.Observable o, Object arg) { final Object fecha = arg; // Se actualiza en pantalla la fecha/hora. SwingUtilities.invokeLater (new Runnable() { public void run() { setText (format.format(fecha)); } }); } }); // Se da una dimension al JLabel. this.setPreferredSize(new Dimension (200, 50)); }

/** * Cambia el formato de presentacion de la fecha/hora en pantalla. */ public void setFormat (SimpleDateFormat unFormato) { format = unFormato; } /** * Clase para mostrar una fecha/hora en formato texto. */ SimpleDateFormat format = new SimpleDateFormat ("dd/MM/yyyy hh:mm:ss"); }

/*APLETT * Javier Abelln, 10 Oct 2004 * * Ejemplo de uso de javax.swing.Timer. Se hace un reloj digital utilizando la * clase javax.swing.Timer */ package chuidiang.ejemplos.reloj; import javax.swing.JApplet; import chuidiang.ejemplos.reloj.RelojVisual; /** * Applet que visualiza un reloj utilizando javax.swing.Timer. */ public class AppletRelojSwing extends JApplet { /** * Crea el modelo y la visual del rejoj, metindolos en el applet. */ public void start() { RelojModeloSwing modelo = new RelojModeloSwing(); RelojVisual visual = new RelojVisual(modelo); getContentPane().add(visual); } } UTIL

/* * Javier Abelln, 10 de octubre de 2004 * RelojModelo.java */ package chuidiang.ejemplos.reloj; import import import import java.util.Timer; java.util.TimerTask; java.util.Date; java.util.Observable;

import java.util.Observer; /** * Modelo de reloj utilizando java.util.Timer */ public class RelojModeloUtil extends Observable { /** * Lanza un timer cada segundo. */ public RelojModeloUtil() { Timer timer = new Timer(); timer.scheduleAtFixedRate(timerTask, 0, 1000); } /** * main de prueba de esta clase. * No necesita una ventana para funcionar. */ public static void main (String [] args) { RelojModeloUtil modelo = new RelojModeloUtil(); modelo.addObserver (new Observer() { public void update (Observable unObservable, Object dato) { System.out.println (dato); } }); } /** * Clase que se mete en Timer, para que se le avise cada segundo. */ TimerTask timerTask = new TimerTask() { /** * Mtodo al que Timer llamar cada segundo. Se encarga de avisar * a los observadores de este modelo. */ public void run() { setChanged(); notifyObservers(new Date()); } }; }

/* * Javier Abelln, 10 de octubre de 2004 * reloj.java */ package chuidiang.ejemplos.reloj; import javax.swing.JLabel; import java.util.Observer;

import import import import import import

java.util.Observable; java.util.Date; java.awt.Dimension; javax.swing.SwingUtilities; javax.swing.SwingConstants; java.text.SimpleDateFormat;

/** * Visual para mostrar el reloj. * Es un JLabel que recibe un Observable de cambio de fecha. */ public class RelojVisual extends JLabel { /** * Se pasa un observable de fecha/hora. El Observable debe pasar un * Date a esta visual para que la presente. */ public RelojVisual(Observable modelo) { // La fecha/hora se pinta en el centro de este JLabel this.setHorizontalAlignment((SwingConstants.CENTER)); // Suscripcin al cambio de fecha/hora en el modelo recibido. modelo.addObserver (new Observer () { // Mtodo al que el Observable llamar cuando se cambie // la fecha/hora. El arg se espera que sea un Date. public void update(java.util.Observable o, Object arg) { final Object fecha = arg; // Se actualiza en pantalla la fecha/hora. SwingUtilities.invokeLater (new Runnable() { public void run() { setText (format.format(fecha)); } }); } }); // Se da una dimension al JLabel. this.setPreferredSize(new Dimension (200, 50)); } /** * Cambia el formato de presentacion de la fecha/hora en pantalla. */ public void setFormat (SimpleDateFormat unFormato) { format = unFormato; } /** * Clase para mostrar una fecha/hora en formato texto. */ SimpleDateFormat format = new SimpleDateFormat ("dd/MM/yyyy hh:mm:ss"); }

/*APPLET * Javier Abelln, 10 Oct 2004 * * Ejemplo de uso de un Timer de java.util * Crea una ventana con un reloj digital dentro que se * actualiza cada segundo. */ package chuidiang.ejemplos.reloj; import javax.swing.JApplet; /** * Applet que visualiza un relog utilizando java.util.Timer */ public class AppletRelojUtil extends JApplet { /** * Crea un modelo de reloj y su visual, metindolos en el applet. */ public void start() { RelojModeloUtil modelo = new RelojModeloUtil(); RelojVisual visual = new RelojVisual(modelo); getContentPane().add(visual); } }

También podría gustarte