Ayuda a comprender el uso del Timer en java.

Soy demasiado novato en el mundo de java, sin embargo me quiero especializar en él, y considero que por algo hay que empezar. La duda que tengo o más bien no se como hacerlo es emplear la clase java. Útil. Timer, he revisado la documentación por Internet pero no me queda muy claro, el fin de esto es implementar el siguiente código mediante un timer:
import java.awt.Graphics;
import javax.swing.JPanel;
public class RayosDeBicicleta extends JPanel {
public void paintComponent (Graphics g)
{
super.paintComponent(g);
int anchura = getWidth();
int altura = getHeight();
double radianes;
double y2;
double x2;
for ( int grados = 0; grados <= 360; grados++ )
{
radianes = grados * Math.PI/180;
x2 = Math.cos(radianes) * (anchura/2) + (anchura/2);
y2 = (altura/2) - (Math.sin(radianes) * (altura/2));
g.drawLine(anchura/2, altura/2, (int) x2, (int) y2);
} // fin de for
} // fin del método panelDibujo
} // fin de la clase RayosBicicleta
Si ejecuto este código me dibuja un frame con líneas concéntricas, para cuando aparece en pantalla ya están dibujadas dichas líneas, lo que pretendo es que entre cada línea que este por dibujarse exista cierto tiempo para que se vea como va apareciendo una por una y si se puede que borre la anterior para que parezca "una sola manecilla" corriendo al contrario de las manecillas del reloj. Si hay alguien que me pueda auxiliar en esto le agradeceré infinitamente.
Salu2 a to2.

1 respuesta

Respuesta
1
El uso de la clase Timer es relativamente sencillo. En estos enlaces puedes ver algunos ejemplos:
http://www.java2s.com/Code/Java/Development-Class/UsejavautilTimertoscheduleatasktoexecuteonce5secondshavepassed.htm
http://csusap.csu.edu.au/java-tut/essential/threads/timer.html
http://www.javapractices.com/topic/TopicAction.do?Id=54
Pero me temo que tu caso es algo particular ya que la tarea de pintar la manecilla debe hacerse con datos diferentes cada vez y usando el Timer se puede hacer complicado.
¿Has probado algo así?:
for ( int grados = 0; grados <= 360; grados++ )
{
radianes = grados * Math.PI/180;
x2 = Math.cos(radianes) * (anchura/2) + (anchura/2);
y2 = (altura/2) - (Math.sin(radianes) * (altura/2));
g.drawLine(anchura/2, altura/2, (int) x2, (int) y2);
try{
Thread.sleep(1000); // Pausa de un segundo

}
catch (InterruptedException e){}
} // fin de for
Si quieres que se dibuje siempre solo tienes que hacer un bucle infinito y entonces ya tendrás un método que pinta siempre a cada segundo (o el tiempo que quieras) indefinidamente.
Muchas gracias, esos links están de 10!. Con esa información yo veré como implementarlo en mi código. Creo que estaré escribiendo seguido y gracias nuevamente.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas