Ver Mensaje Individual
  #8 (permalink)  
Antiguo 29/07/2015, 16:46
Avatar de GusGarsaky
GusGarsaky
 
Fecha de Ingreso: febrero-2015
Mensajes: 33
Antigüedad: 9 años, 9 meses
Puntos: 2
Respuesta: ¿Cómo hacer un temporizador en JAVA?

Solo pasa la referencia del JFrame al constructor de Timeout:

Código Java:
Ver original
  1. import java.util.Timer;
  2. import java.util.TimerTask;
  3.  
  4. public class Timeout {
  5.  
  6.     private int hour;
  7.     private int minute;
  8.     private int second;
  9.     private Timer timer;
  10.     private boolean isTimerRunning;
  11.     private MainGUI mainGui;
  12.     private TimeFormatter tf;
  13.  
  14.     public Timeout(MainGUI mainGui) {
  15.         timer = new Timer();
  16.         tf = new TimeFormatter();
  17.         mainGui = mainGui;
  18.     }
  19.  
  20.     TimerTask task = new TimerTask() {
  21.         @Override
  22.         public void run() {
  23.             isTimerRunning = true;
  24.             if(second > 0) {
  25.                 second--;
  26.             } else {
  27.                 second = 59;
  28.                 if(minute > 0) minute--;
  29.                 else {
  30.                     minute = 59;
  31.                     if(hour > 0) hour--;
  32.                     // si segundo = 0, minuto = 0 y hora = 0,
  33.                     // cancelamos el timer
  34.                     else {
  35.                         isTimerRunning = false;
  36.                         timer.cancel();
  37.                         timer.purge();
  38.                     }
  39.                 }
  40.             }
  41.             if(isTimerRunning) {
  42.                 String time = tf.formatTime(hour, minute, second);
  43.                 mainGui.getTxtTime().setText(time);
  44.             }
  45.         }
  46.     }; // fin timertask
  47.  
  48.     public void start(int timeout, int interval) {
  49.         timer.schedule(task, timeout, interval);
  50.     }
  51.  
  52.     // getters y setters para las propiedades
  53.  
  54. } // fin clase

Redefine Display para que retorne la hora formateada:

Código Java:
Ver original
  1. public class TimeFormat {
  2.  
  3.     public String formatTime(int hour, int minute, int second) {
  4.         String fullHour = "";
  5.  
  6.         fullHour += (hour > 9) ? ":" + hour : "0" + hour;
  7.         fullHour += (minute > 9) ? ":" + minute : ":0" + minute;
  8.         fullHour += (second > 9) ? ":" + second : ":0" + second;
  9.  
  10.         return fullHour;
  11.     }
  12. }

Entonces, asocias el JFrame con el Timer así:

Código Java:
Ver original
  1. public class MainGUI extends JFrame {
  2.  
  3.     private Timeout timeout;
  4.  
  5.     public MainGUI() {
  6.         new Timeout(this);
  7.         initComponents();
  8.     }
  9.  
  10.     private void initComponents() {
  11.         // aqui construyes tu GUI
  12.     }
  13.  
  14.     public void startTimer(int delay, int interval) {
  15.         timeout.start(delay, interval);
  16.    }
  17. }

Y la clase Main:

Código Java:
Ver original
  1. public class Main {
  2.  
  3.     public static void main(String[] args) {
  4.         MainGUI gui = new MainGUI();
  5.         gui.setVisible(true);
  6.         gui.startTime(0, 1000);
  7.     }
  8. }