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

como hacer esto en java????

Estas en el tema de como hacer esto en java???? en el foro de Java en Foros del Web. hola, me gustaria saber como hacer que se ejecute una funcion cada x segundos. se que existe el thread.sleep, pero no me sirve, por que ...
  #1 (permalink)  
Antiguo 13/10/2010, 03:47
 
Fecha de Ingreso: marzo-2007
Mensajes: 23
Antigüedad: 17 años, 8 meses
Puntos: 0
como hacer esto en java????

hola, me gustaria saber como hacer que se ejecute una funcion cada x segundos.
se que existe el thread.sleep, pero no me sirve, por que se tiene que seguir mostrando la pantalla, y no quedar en blanco.

me han hablado de la clase timer, pero no la acabo de entender.
alguien me puede ayudar????

gracias por todo
  #2 (permalink)  
Antiguo 13/10/2010, 05:09
Avatar de Fuzzylog  
Fecha de Ingreso: agosto-2008
Ubicación: En internet
Mensajes: 2.511
Antigüedad: 16 años, 3 meses
Puntos: 188
Respuesta: como hacer esto en java????

Aquí tienes un ejemplo desarrollado por el amigo Chui :P

http://www.chuidiang.com/java/timer/timer.php

Básicamente cuando generas un timer debes especificar cada cuantos milisegundos quieres que salte, es decir, con un timer de 1000 ms tendrías el equivalente a un reloj, ya que se actualiza a cada segundo.

Lo otro que debes especificar es bajo que circunstancias debe ejecutarse, por ejemplo, cada vez que se inicie la aplicación, cuando se produzca un evento concreto (en este caso se utilizarían listeners), etc.

Y por último, también se puede especificar el número de pasos (o veces que se ejecuta el timer).

Es decir un timer de 10 pasos con 1000 ms deja de ejecutarse a los 10 segundos. Pero en ese tiempo se ha ejecutado 10 veces.
  #3 (permalink)  
Antiguo 13/10/2010, 05:31
 
Fecha de Ingreso: marzo-2007
Mensajes: 23
Antigüedad: 17 años, 8 meses
Puntos: 0
Respuesta: como hacer esto en java????

eso ya lo habia visto, pero no lo entiendo del todo, al menos lo de la accion.
yo tengo que usarlo en diferentes partes del programa, y para reutilizar codigo no se como hacerlo.
no hay nada, para fijar solo el tiempo??????
y que no bloquee la pantalla?????
es decir es para un juego que reparte cartas, y lo que quiero es que se vea el movimiento. lo de moverlas lo hace, pero es tan rapido que no se ve, y quiero ralentizarlo

gracias por todo
  #4 (permalink)  
Antiguo 13/10/2010, 05:34
Avatar de Fuzzylog  
Fecha de Ingreso: agosto-2008
Ubicación: En internet
Mensajes: 2.511
Antigüedad: 16 años, 3 meses
Puntos: 188
Respuesta: como hacer esto en java????

Yo que tú generaría una animación (gif animado) y trataría de ejecutarlo de esa forma...
  #5 (permalink)  
Antiguo 13/10/2010, 05:50
 
Fecha de Ingreso: marzo-2007
Mensajes: 23
Antigüedad: 17 años, 8 meses
Puntos: 0
Respuesta: como hacer esto en java????

y si no, si no se viese el movimiento, solo para que parezcan en el panel de una en una, como se haria?????

los digo por que esto es una practica que tengo que hacer y lo que se muevan es opcional

gracias por todo
  #6 (permalink)  
Antiguo 13/10/2010, 06:24
Avatar de Fuzzylog  
Fecha de Ingreso: agosto-2008
Ubicación: En internet
Mensajes: 2.511
Antigüedad: 16 años, 3 meses
Puntos: 188
Respuesta: como hacer esto en java????

Pues tendrías que definir un timer, pongamos por ejemplo de 1000 ms y que se ejecute una vez. Como se ejecuta en una determinada situación, tienes que ver a que evento se corresponde la ejecución del timer.

http://www.google.es/search?hl=es&so...=&oq=&gs_rfai=

Entonces lo ejecutas, muestras la siguiente imagen cuando se termine de ejecutar (por ejemplo un timer de un paso para no complicarlo), y refrescas la pantalla (juraría que tienes que utilizar repaint() si es una GUI), y volver a lanzar otro timer tras ese evento y volver a mostrar la nueva imagen... etc. Si te lo has currado bien podrías hacerlo con un array de imagenes y un bucle, ahorrando así lineas de código.

Con los timers puede existir algun problema de sincronización, ya que no sé exactamente si la ejecución de código se termina cuando salta el timer y vuelve a reiniciarse cuando acaba o si continua a pesar de lanzar el timer. Eso investígalo bien.

Suerte
  #7 (permalink)  
Antiguo 13/10/2010, 06:45
 
Fecha de Ingreso: marzo-2007
Mensajes: 23
Antigüedad: 17 años, 8 meses
Puntos: 0
Respuesta: como hacer esto en java????

haber, lo que tengo ahora mismo para recojer es esto, que tendria que cambiar?????
Código:
 public static void  recojedor(JLabel[] cartas)
      {
         int x,y;
         for (int i = 0; i<=51;i++)
         {
         
            y= cartas[i].getY();
            for (x=cartas[i].getX();x>0;x--)
            {
               cartas[i].setBounds(x, y, 73, 97);
               if (y>0)
                  y--;
               tiempo();
              
            
            }
            if ((x==0)&(y>0))
               for (y=cartas[i].getY();y>0;y--){
                  cartas[i].setBounds(x, y, 73, 97);
               }
            cartas[i].setVisible(false);
           
         }
      
      }
gracias por todo

Etiquetas: Ninguno
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 22:30.