Foros del Web » Programación para mayores de 30 ;) » Java »

Detener Timer

Estas en el tema de Detener Timer en el foro de Java en Foros del Web. Hola, he creado un pequeño programa que cuando hace click en un boton salta una cuenta atras de 5 minutos. los pasos son los siguientes. ...
  #1 (permalink)  
Antiguo 19/07/2012, 15:00
 
Fecha de Ingreso: mayo-2012
Ubicación: Madrid
Mensajes: 9
Antigüedad: 11 años, 11 meses
Puntos: 0
Pregunta Detener Timer

Hola,

he creado un pequeño programa que cuando hace click en un boton salta una cuenta atras de 5 minutos. los pasos son los siguientes.

Click en el boton -> creo un nuevo timer y cada segundo voy poniendo en un jlabel el tiempo actual.

la primera vez todo va normal, pero la segunda vez que das al boton, el thread con el timer de la primera vez sigue contado, por tanto va el doble de rapido.

Existe alguna manera de parar ese timer. he intentado haciendo timer.stop(), pero claro desde la misma funcion no se puede, y tampoco puedo añadirlo en el evento del boton porque pararia el thread principal, os dejo el codigo.

Código:
    private void azul_botActionPerformed(java.awt.event.ActionEvent evt) {                                         

      azul_cont.setText("300");
      
Timer timer = new Timer (1000, new ActionListener () 
{ 
    public void actionPerformed(ActionEvent e) 
    { 
        int seg = Integer.parseInt(azul_cont.getText());
     
       if(seg!=0){
              seg=seg-1;            
          azul_cont.setText(seg+"");          
          }
          
     } 
}); 
timer.start();
  #2 (permalink)  
Antiguo 19/07/2012, 16:25
 
Fecha de Ingreso: abril-2011
Mensajes: 1.342
Antigüedad: 13 años
Puntos: 344
Respuesta: Detener Timer

Es muy sencillo, la variable timer tienes que tenerla como una variable de la clase, no dentro del método.

Código Java:
Ver original
  1. public class Form extends JFrame implements ActionListener {
  2.  
  3.     private Timer timer = null;
  4.  
  5.     private void azul_botActionPerformed(java.awt.event.ActionEvent evt) {
  6.  
  7.         if (timer != null)
  8.             timer.stop();        
  9.        
  10.         timer = new Timer(1000, new ActionListener() {
  11.  
  12.             public void actionPerformed(ActionEvent e) {
  13.                 //Realizas lo que quieras
  14.             }
  15.         });
  16.        
  17.         timer.start();
  18.     }
  19.  
  20.     public void actionPerformed(ActionEvent e) {
  21.         azul_botActionPerformed(e);
  22.     }
  23. }
  #3 (permalink)  
Antiguo 20/07/2012, 01:36
 
Fecha de Ingreso: mayo-2012
Ubicación: Madrid
Mensajes: 9
Antigüedad: 11 años, 11 meses
Puntos: 0
Respuesta: Detener Timer

Muchas gracias, me has solucionado el problema

Etiquetas: detener, programa, time
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 12:10.